W2014 Cz I Liczby Kody Operacje - Grupy X Stac Niest, Dokumenty WAT Start 2014-20XX, programowanie


Zbiór materiałów do

ćwiczeń rachunkowych

z przedmiotu

„Metodyka i techniki programowania

Cz. I

Formy przedstawiania liczb w komputerze

Cz. II

Algorytmy (w oddzielnym pliku)

Tematy ćwiczeń rachunkowych dla grup stacjonarnych
E4x1S1-E4x6S1

Łącznie: 46 godz.

wykłady- 14 ćwicz. rach. - 8 lab.- 24

Część I

Temat 1: Konwersje i zapis liczb w różnych systemach (2 godz.)

Temat: 2 Kody ZM,U1,U2. Operacje arytmetyczne. (2 godz.)

Część II

Temat: 3 Analiza problemu i specyfikacja algorytmu. (3 godz.)

Temat 5. Kolokwium z tematów 1-3 (1 godz.)

Tematy ćwiczeń rachunkowych dla grup niestacjonarnych
E4x1N1, E4x2N2

Łącznie: 50 godz.

wykłady- 16 ćwicz. rach. - 6 lab.- 26

Część I

Temat 1: Konwersje i zapis liczb w różnych systemach (1 godz.)

Temat: 2 Kody ZM,U1,U2. Operacje arytmetyczne. (1 godz.)

Część II

Temat: 3 Analiza problemu i specyfikacja algorytmu. (3 godz.)

Temat 4. Kolokwium z tematów 1-3 (1 godz.)

INFORMACJE

DOSTĘPNOŚĆ MATLABA

MATLAB jest oprogramowaniem płatnym. Oprogramowanie ma licencję na czas studiów. Dla studentów cena 87 $. Ta wersja zawiera też SIMULINK z niektórymi ToolBox'ami.

Dystrybucja firma: Oprogramowanie naukowo techniczne. Kraków.

WWW.ont.com.pl

Istnieją zbliżone wersje darmowe o nazwach: FreeMat, SCILAB, (SCICOS odpowiednik SIMULINKA dla SCILABA)

Literatura

podstawowa:

uzupełniająca:

Cz. I

REPREZENTACJA LICZB
W KOMPUTERZE

Materiały do ćwiczeń dla studentów

System pozycyjny zapisu liczb

Liczby w zapisie pozycyjnym (np. 32 875) przedstawiane jako łańcuchy cyfr (ci), czyli znaków przypisanych liczbom naturalnym:

ci {0,1,.., R-1}

Podstawą R pozycyjnego systemu liczenia jest ilość różnych symboli (cyfr) dopuszczalnych na każdej pozycji zapisu liczby.

Natomiast rzeczywista wartość cyfry w liczbie zależy od jej pozycji zajmowanej
w łańcuchu cyfr. Np. cyfra 5 w liczbie 535 co innego znaczy na pozycji pierwszej
i ostatniej.
Wartość liczby L jest suma cyfr mnożonych przez wagi odpowiednie dla pozycji, na których te cyfry występują:

0x01 graphic
(1)

gdzie: i - numery pozycji na lewo od przecinka oddzielającego część całkowitą od części ułamkowej( i=0, 1, ..n),

L(R) -wartość liczby w systemie o podstawie R w którym zapisana jest liczba

Jeśli omawiane są reprezentacje liczb w różnych systemach to podając wartość liczby należy też zaznaczyć notację system np. 101d. Przy zapisie notacji używane są litery bądź cyfry np. 8 -ósemkowy(lub litera q), h- heksadecymalny (szesnastkowy), b-binarny, d-dziesiętny (lub 10) itp.

System dziesiętny- Podstawa R=10 oraz 10 cyfr: ci {0,1,2,. . . ,9 },

Np. korzystając z wzoru (1) liczbę 32 875 10 można zapisać jako:

3x10000 + 2x1000 + 8x100 + 7x10 + 5x1

3 2 8 7 5

104 103 102 101 100 wagi kolejnych cyfr systemu

W podobny sposób można też przedstawić liczby Lu <1 tzn. liczby ułamkowe:

0x01 graphic
(2)

gdzie: pozycje położone na prawo od przecinka mają w tej konwencji ujemne:
-1, -2,-3,... wartości wykładnika określającego wagę cyfry
Np. korzystając z (2) liczbę 0,625 można przedstawić jako:

6*10-1 + 2*10-2 + 5*10-3

Korzystając z wzoru (1) można zapisać liczbę w dowolnym systemie tzn. o różnych podstawach R i odczytać jej wartość w systemie dziesiętnym np.: System „8” (237) 8 =2*82 + 3*81 + 7*80=159d

System „4” (233) 4 =2*42 + 3*41 + 3*40= 47d

Reprezentacja liczb całkowitych- kod binarny

Podstawą kodu binarnego jest podstawa R=2. W takim kodzie występują 2 cyfry: 0 i 1. Taki kod jest idealny do zapisu informacji w komputerze, bowiem komputery rozróżniają tylko dwa stany: 0 i 1, które zawiera najmniejsza porcja informacji nazywana bitem [b]. Zwykle stosuje się większą jednostkę bajt [B]. Jeden bajt to 8 bitów. Naturalnym dla komputera systemem zapisu danych jest system dwójkowy (binarny), lecz ze względów technicznych używa się także systemów: szesnastkowego (heksadecymalny) i rzadziej- ósemkowego (oktalny). 

Każda liczba L może być zapisana na pewnej ilości n bitów. Ilość n bitów niezbędną do zapisu liczby dziesiętnej L można wyznaczyć z nierówności:

(2n -1) ≥ L (3)

Bitów może być oczywiście więcej niż n. Dlatego liczba n może być zaokrąglona w górę do całkowitej wielokrotności 8- tak, aby była wyrażona w bajtach. Np. jeśli L= 968 to analizując kolejno np. dla n=8, 9 spełnienie relacji (3) nastąpi dopiero dla n=10 bo :

( 210 -1 ) ≥ 968

Czyli minimalna liczba bitów niezbędna dla zapisu liczby 968 to n=10 bitów, zaokrąglając w górę - potrzeba 2 bajty. Oczywiście może być też więcej bitów, wówczas na niewykorzystanych bitach znajdują się zera.

W kodzie binarnym inaczej przedstawiane są liczby całkowite nieujemne,
a inaczej ujemne. Inaczej też zapisuje się liczby ułamkowe
.

Natomiast w przypadku liczb rzeczywistych (tzn. posiadających część całkowitą i ułamkową) ich część całkowita jest zapisywana w postaci jednego ciągu bitów a część ułamkowa w postaci drugiego ciągu.

W systemie o R=2 (dwójkowym, binarnym) są dwie cyfry: 0 i 1, a kolejne pozycje z n-pozycji liczby odpowiadają kolejnym potęgom liczby 2.

Np.: dla n= 4 ciąg 1 1 1 0 (2) zawiera liczbę l*23+1*22+l*21+0*20 = 14(10)

Zakładając 1 bajt (tzn. n= 8) to oznaczenia i wagi bitów są następujące:

0x08 graphic

Nr bitu: b7 b6 b5 b4 b3 b2 b1 b0

27 …….. 23 22 21 20

Wagi bitów: 128 64 32 16 8 4 2 1

Kod o takich wagach jest nazywany naturalnym kodem binarnym - NKB.

Bit bo ­jest bitem najmniej znaczącym -LSB (least significant bit),

a bit najstarszy tzn. bn-1 - MSB (most significant bit)

Największa liczba zapisana przy pomocy n bitów to Lmax= (2n -1)- stąd dla n=8 Lmax=255 - co odpowiada jedynce na wszystkich bitach bajtu.

Zamiana liczby dziesiętnej ( całkowitej, dodatniej) na binarną- algorytm Hornera

Dana jest liczba naturalna np. 108 zapisana w systemie dziesiętnym. Należy znaleźć jej notację w systemie binarnym.

Sposób rozwiązania (jeden z możliwych):

Należy dzielić całkowicie przez dwa daną liczbę oraz zapisywać resztę
z dzielenia całkowi­tego. Otrzymane wartości reszt z dzielenia, zapisane w kolejności odwrotnej dają zapis liczby w systemie binarnym. (na końcu
dzielenia otrzymujemy najbardziej znaczącą cyfrę binarną),

Rozwiązanie

Tabela 1. Zamiana liczby z systemu dziesiętnego na dwójkowy

Działanie

Wynik

Reszta

108:2

54

0

54:2

27

0x08 graphic
0

27:2

13

0x08 graphic
1

13:2

6

1

6:2

3

0

3:2

1

1

1:2

0

1

Sprawdzenie:

1101101(2)*26+l*25+0*24+l*23+l*22+0*21+0*2° = 64+32+8+4 =108(10)

W podobny sposób można odczytać wartość dziesiętną ciągów przedstawiających zapis binarny liczby rzeczywistej (nieujemnej) np.:

(101,101) (2) =1*22 + 0*21 + 1*20 + 1*2-1 + 0*2-2 + 1*2-3 =5,625

Zamiana liczby dziesiętnej ( całkowitej, dodatniej) na binarną

Liczbę całkowitą z systemu dziesiętnego można zamienić na NKB jeśli właściwie oszacujemy niezbędną, minimalną liczbę n bitów (na podstawie nierówności (3))

Przedstawiony dalej algorytm dokonuje zamiany liczby X na postać binarną, dobierając kolejno wagi binarne. Każdorazowo dobiera największą z możliwych wag (stąd zachłanność).

Algorytm zamiany metodą doboru wag

  1. Nadać wszystkim n- bitom wartość 0.

  2. znaleźć najmniejszą wartość n taką, aby zachodziła relacja:
    2
    n +1 > X ≥2n

Nadać bitowi bn wartość bn =1.

3) Obliczyć różnicę Y=X- 2n Czy Y=0 ?

TAK: Przejdz do 4.

NIE: Podstaw X:=Y. Przejdz do punktu 2.

4. Koniec.

Przykład:

Wykorzystując algorytm. Przedstaw w NKB liczbę 88(10).

1. Przyjmujemy początkowo n=8 i X(NKB)= 0 0 0 0 0 0 0 0

2. Szukamy największego n aby 2n+1 > 88 ≥ 2n Dla n=7 jest (27 > 88 > 26).
Czyli największą możliwą wagą jest 2
6 . Stąd bit b6=1;

3. Zostaje różnica Y=88-64=24 Ponieważ Y>0 to nowa wartość X=24

2. Szukamy największego n aby 2n+1 > 24 ≥ 2n . Dla n=4 jest (25>24> 24 ).
Czyli największą możliwą wagą jest 24 . Stąd bit b4=1;

3. Zostaje różnica Y=24-16=8. Ponieważ Y>0 to X=8

2 Szukamy znów największego n aby 2n+1 > 8 ≥ 2n . Dla n=3 jest (24>8 ≥ 23 ).
Czyli największą możliwą wagą jest 23 . Stąd bit b3=1;

3. Zostaje różnica Y=8 -8=0

Ponieważ Y=0 to punkt 4.

4. KONIEC

Czyli otrzymujemy: 88d= 0 1 0 1 1 0 0 0

Ciągi binarne - podstawowe operacje logiczne

W operacjach logicznych liczba binarna jest traktowana jako zbiór pojedynczych cyfr binarnych.

Operacje na bitach

Negacja (NOT)

!1 = 0, !0 = 1

Koniunkcja (AND)

0 & 0 = 0, 1 & 0 = 0, 0 & 1 = 0, 1 & 1 = 1

Alternatywa (OR)

0 | 0 = 0, 1 | 0 = 1, 0 | 1 = 1, 1 | 1 = 1

Różnica symetryczna

XOR

0 ^ 0 = 0, 1 ^ 0 = 1, 0 ^ 1 = 1, 1 ^ 1 = 0

Przykłady:

0x08 graphic
0x01 graphic

Operacje arytmetyczne na ciągach binarnych

Dodawanie

Liczby dwójkowe dodajemy podobnie, jak dziesiętne. Gdy po dodaniu dwóch cyfr uzyskuje się wartość niemożliwą do zapisania pojedynczą cyfrą, zachodzi tzw. przeniesienie. Odejmujemy wtedy od wyniku podstawę systemu, a do następnej pozycji dodajemy 1 (np. 9+8=17-10) =7(1)7

W przypadku liczb dwójkowych przeniesienie wystąpi już wtedy, gdy wynik dodawania dwu cyfr jest większy od 1.

Reguły dodawania:

0x01 graphic

Reguły odejmowania:

0x01 graphic

Mnożenie i dzielenie

Przykłady

0x01 graphic

Mnożenie przez 2 w układzie binarnym - przesunięcie liczby o jedną pozycję w lewo i dopisanie zera z prawej strony liczby.

Dzielenie przez 2 w układzie binarnym - przesunięcie liczby o jedną pozycję w prawo i odrzucenie ostatniej cyfry (jeśli liczba parzysta to tą cyfrą jest zero).

Przykład:

Mnożenie przez 10 w układzie dziesiętnym i przez 2 w układzie dwójkowym.

0x01 graphic

Podobnie mnożenie i dzielenie w układzie dwójkowym przez 4 i inne potęgi dwójki - można realizować jako przesunięcie w lewo (dla mnożenia) lub w prawo (dla dzielenia) o odpowiednią liczbę pozycji.

System oktalny (ósemkowy)

W systemie ósemkowym (R=8) mamy do dyspozycji osiem cyfr (0, 1, 2, ...,7), a kolejne pozycje odpowiadają kolejnym potęgom liczby 8.

Np. 407(8) = 4*82+0*81+7*80 = 4*64+7 = 256+7 = 263(10)

Przykład :

Dana jest liczba naturalna n = 197 zapisana w systemie dziesiętnym. Należy znaleźć jej notację w systemie ósemkowym.

Sposób rozwiązania:

Należy daną liczbę dzielić całkowicie przez osiem oraz zapisywać resztę z dzielenia całkowitego. Wartości reszty z dzielenia, zapisane w kolejności odwrotnej, dadzą liczbę w systemie oktalnym.

Rozwiązanie

Tabela . Zamiana liczby z systemu dziesiętnego na ósemkowy

Działanie

Wynik

Reszta

197:8

24

0x08 graphic
0x08 graphic
5

24: 8

3

0

3:8

0

3

Wynik: 305(8)

Sprawdzenie: 305(8) = 3*82+0*81+5*8° = 3*64+5 = 192+5 = 197(10)

0x08 graphic
Przykład 1.3. Zamiana liczby oktalnej na binarną.

Dana jest liczba naturalna n = 604(8) zapisana w systemie ósemkowym. Należy znaleźć jej notację w systemie binarnym.

Sposób rozwiązania:

Ponieważ podstawą systemu oktalnego jest liczba 8 (jej zapis wymaga 3 bitów), a potęgą podstawy systemu binarnego 2, można zamieniać reprezentację liczb w tych systemach, zamieniając odpowiadające sobie cyfry (ciągi cyfr).

Tabela. Tabela konwersji z systemu oktalnego na binarny (i odwrotnie)

0x08 graphic
cvfra oktalna liczba binarna

0x08 graphic
0x08 graphic
Rozwiązanie

Należy zamienić cyfry z systemu oktalnego na ciągi cyfr w sys­temie binarnym.

0x08 graphic
0x08 graphic
0x08 graphic

Zamiana z systemu binarnego na ósemkowy wymaga postępowania odwrotnego tzn. podziału na grupy 3 bitowe (od najmłodszego bitu) i przyporządkowania każdej grupie cyfry ósemkowej : 110 000 100(2) 604 (8)

System heksadecymalny

W systemie heksadecymalnym R=16 (szesnastkowym) mamy do dyspozycji 10 cyfr: (0, 1, 2,...,9) oraz sześć liter (A, B, C, D, E, F).

Wartości 10 odpowiada A, 11 B, 12 C, 13 D, 14 E, 15 F. Kolejne po­zycje liczby w tym systemie odpowiadają kolejnym potęgom liczby 16.

Np. 5C(h) = 5*161+12*16° = 80+12 = 92(l0)

Przykład: Znaleźć notację heksadecymalną liczby dziesiętnej N = 107.

Rozwiązanie:

Należy daną liczbę dzielić całkowicie przez szesnaście oraz zapisywać resztę z dzielenia całkowitego (reszty 10 i więcej zapisujemy jako cyfry A,B,C,D,E,F).

Tabela . Zamiana liczby 107 z systemu dziesiętnego na szesnastkowy

0x08 graphic
0x08 graphic
Działanie Wynik Reszta

0x08 graphic
0x08 graphic
107:16 6 (11) czyli B

6:16 0 6

Sprawdzenie: 6 B h=6*161 + 11*160 =96+ 11=107 (10)

Przykład 1.5. Zamiana liczby binarnej na heksadecymalną.

Dana jest liczba naturalna n =10010110011 zapisana w systemie binarnym. Znajdź jej notację w systemie szesnastkowym.

Sposób rozwiązania:

Podstawą systemu jest 16 (24 - co wymaga 4 bitów) a binarnego 2, należy więc podzielić ciąg bitów na grupy 4 bitowe i każdej przyporządkować odpowiednią cyfrę systemu hex (wg tabeli).

Cyfra

heksadecymalna

0x08 graphic
Liczba

binarna

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

0x08 graphic
0x08 graphic
0x08 graphic
1000

9

1001

A

0x08 graphic
1010

B

1011

C

1100

D

1101

E

1110

F

1111

Na liczbach hex można wykonywać typowe operacje np.:

1B8 440

0x08 graphic
+ C7 199

2 7 F 639Konwersja liczb pomiędzy różnymi systemami

Dla znalezienia wartości dziesiętnej liczby zapisanej w innym systemie pozycyjnym wygodnie jest skorzystać z definicji. W systemie dwójkowym jest to proste, gdyż cyfry 0 lub 1 występujące jako mnożniki wag dają 0 lub wagę, która jest odpowiednią potęgą 2).

Np.: liczba 1 1 0 1 0 1 b ma jedynki na poz. o wagach 1,4,16 i 32, a jej wartość dziesiętna wynosi 1+4+16+32 = 53

Cyfry dwójkowe 1 10 1 0 1

Wagi 25 24 23 22 21

Liczba 0,1101b ma jedynki na pozycjach o wagach równych ½, ¼, i 1/16, - jej wartość dziesiętna wynosi ½+ ¼ + 1/16 =13/16

Cyfry dwójkowe: 0, 1 1 0 1

Wagi 20 , 2-1 2-2 2-3 2-4

W systemach innych niż dwójkowy trzeba wykonać mnożenie; np.

Np. dla liczby: 1BC5h mamy:

Cyfry szesnastkowe

1

B

C

5

Wartość cyfr

11

12

5

Wagi

163=4096

162=256

161 =16

16°=1

Czyli liczba 1BC5h = 1x4096 +11x256 +12x16 + 5x1 =7109(10)

Przydatność zapisu szesnastkowego polega głównie na tym, że pozwala on zapisywać w zwięzłej postaci łańcuchy dwójkowe (nie zawsze reprezentujące liczby), które to łańcuchy w sposób naturalny opisują stan urządzeń cyfrowych. Z faktu, że 16 = 24 wynika, że 4 cyfry dwójkowe mogą być zastąpione przez 1 cyfrę szesnastkową.

Konwersja z systemu hexsadesymalnego na binarny lub odwrotnie jest bardzo prosta. To duża zaleta systemu hexsadesymalnego. Wymaga jedynie zastąpienia poszczególnych cyfr szesnastkowych czwórkami bitów (tetradami) lub odwrotnie np.:

1101

0 0 1 1

1 0 0 1

0 1 0 1

D

3

9

5

Kod BCD(Binary Coded Decimal)

Kod dwójkowo - dziesiętny BCD służy do przedstawiania liczb całkowitych bez znaku. W kodzie tym każda cyfra dziesiętna jest zakodowana dwójkowo na 4 bitach, według reguł kodowania binarnego (tabela).

Cyfra dziesiętna

Kod BCD

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

Kodowanie liczb ze znakiem

W układach cyfrowych stosowane są elementy dwustanowe, co wystarcza do odwzorowania zapisu dwójkowego liczb naturalnych bez znaku, (unsigned).
Dla liczb całkowitych (ze znakiem) trzeba dodatkowej umowy co do zapisu znaku, a dla liczb rzeczywistych jest konieczność wskazania miejsca przecinka.

Problem liczb całkowitych (integer) rozwiązuje się za pomocą tzw. kodów liczbowych stałopozycyjnych (fixed point), natomiast liczby rzeczywiste (real) zapisywane w specjalnych formatach zmiennopozycyjnych (floating point) jako para liczb stałopozycyjnych.

Obecnie powszechnie stosowany jest tzw. kod uzupełnień do 2 -U2 {two's complement), choć używano też kodu uzupełnień do 1 -U1 i kodu znak-moduł ZM {sign-magnitude). We wszystkich tych odwzorowaniach trzeba brać pod uwagę wielkość kodu n (liczbę bitów), ponieważ od tego zależy postać zakodowanej liczby — ta sama liczba może mieć różną postać zależ­nie od tego, na ilu bitach jest kodowana.

Kody U1,U2,ZM różnią się sposobem zapisu liczb ujemnych.

Liczby dodatnie mają we wszystkich kodach taki sam zapis.

Kody różnią się też, dla tego samego n, zakresem liczb. Przydatność poszczególnych kodów wynika z łatwości (szybkości) wykonywania w nich działań arytmetycznych, a w praktyce - dodawania.

Reprezentacja binarna ujemnych liczb całkowitych

Aby poszerzyć zakres liczb trzeba stosować bit znaku. Jest on cyfrą 0 lub 1 poprzedzająca pozostałe bity ciągu. Przyjęto, że dla liczb ujemnych wartość bitu znaku wynosi zawsze 1. Do zapisu liczb ze znakiem stosuje się kody oznaczane jako: ZM,U1 i U2. Należy podkreślić, że dodatnia liczba dziesiętna x we wszystkich kodach jest reprezentowana tym samym ciągiem bitów, czyli jest wyrażana w naturalnym kodzie binarnym (NKB). Bity o wartości 1 tego ciągu określają wagi, których suma wyraża wartość x.

Natomiast jeśli x jest liczbą ujemną to ciąg bitów przedstawiający x jest w każdym kodzie inny. Jedynym podobieństwem jest występowanie „1” na najstarszym bicie (bicie znaku).

Kod znak- moduł (ZM)

Kod znak- moduł dla liczby x zapisywanej na n bitach jest definiowany następująco:

0x08 graphic
x jeśli x ≥ 0 - oznacza zapis x w NKB

xZM = (4)

2n-1 +|x| jeśli x < 0 - definicja dla zapisu a ujemnej

Przykład:

Zapisać liczbę -23 w kodzie ZM na n=8 bitach. Korzystając z definicji mamy:

2n-1 =27 =128 1 0000000

0x08 graphic
|-23|= +0 0010111

1 0010111 -23ZM

Po binarnym dodaniu dwu składników otrzymujemy binarny ciąg 1 0010111 przedstawiający liczbę -23 w kodzie ZM.

W kodzie ZM na bicie MSB jest zapisany znak liczby, a na pozostałych bitach jej moduł. Dla n bitów zakres liczb jest następujący:

[-2n-1 -1 : 2n-1 -1]

Przykładowo dla n=8 w kodzie ZM można zapisać liczby z zakresu: [-127: 127]

W kodzie ZM istnieją 2 postacie zera (ujemne i dodatnie)- co jest wadą kodu.

Kod z uzupełnieniem do jedynki- U1

Kod U1 dla liczby x zapisywanej na n bitach jest definiowany następująco:

0x08 graphic
x jeśli x ≥ 0 - oznacza zapis x w NKB

xU1 = (5)

(2n -1) - |x| jeśli x < 0 - definicja dla zapisu a ujemnej

Przykład:

Zapisać liczbę -23 w kodzie U1 na n=8 bitach. Korzystając z definicji mamy:

2n -1 =28 -1=255 1 1111111

0x08 graphic
|-23|= - 0 0010111

1 1101000 -23U1

Po binarnym odjęciu modułu od ciągu jedynek reprezentującego wartość (2n -1), otrzymujemy ciąg 1 1101000 , przedstawiający -23 w kodzie U1.

Wymagane w definicji odejmowanie modułu liczby od ciągu n jedynek jest niczym innym jak uzupełnieniem poszczególnych bitów modułu do jedynki.
Stąd nazwa kodu. Warto zauważyć, że:

  1. zapisując moduł liczby ujemnej a następnie,

  2. negując bit po bicie otrzymujemy liczbę ujemną zapisaną w kodzie U1.

Np. dla liczby x=-23 mamy:

Kod U1 Kod Znak-Moduł

Moduł 0 0010111 Moduł 0 0010111

NOT 1 1101000 - 23U1 ZnM 1 0010111

W kodzie U1 na bicie MSB jest zapisany znak liczby, a na pozostałych bitach jej moduł uzupełniony do „1”. Dla n bitów zakres liczb jest następujący:

[-2n-1 -1 : 2n-1 -1]

Przykładowo dla n=8 w kodzie U1 można zapisać liczby z zakresu: [-127: 127]

W kodzie U1 podobnie jak w ZM istnieją 2 postacie zera (ujemne i dodatnie)- co jest wadą kodu.

Reprezentacja binarna ujemnych liczb całkowitych -kod U2

Standardowo w komputerach stosuje się kod U2 (uzupełnienie do 2).

Liczbę całkowitą x zapisuje się w kodzie U2 na n bitach następująco:

Sposób A wg wzoru:

0x08 graphic
x jeśli x ≥ 0 - oznacza zapis a w kodzie binarnym (NKB)

xu2 = (6)

2n -|x| jeśli x < 0 - definicja dla zapisu a ujemnej

Przykład:

Zakodować na n=8 bitach liczbę -23.

I sposób wg. wzoru A.

1 etap

Zamieniamy na postać binarną liczby: 2n (czyli 256) i 23.

b8 b7 b6 b5 b4 b3 b2 b1 b0

Wagi bitów: 256 128 64 32 16 8 4 2 1

2n = 1 0 0 0 0 0 0 0 0

22(10) = 0 0 0 1 0 1 1 1

2 etap.

Wykonujemy odejmowanie 2n -|a| :

Pożyczka

1

1

1

1

1

1

1

1

Dziesiętnie

2n

1

0

0

0

0

0

0

0

0

256

0x08 graphic
-23

233NKB

|23|

-

0

0

0

1

0

1

1

1

-23u2

1

1

1

0

1

0

0

1

b7

b6

...

...

....

b2

b1

b0

gdzie: kolor zielony bit znaku

Jeśli dane tzn. n=8 i a=-23 podstawimy do wzoru (6) to mamy:

2n -|a| =28 -|23| =256-23=233(10)

Czyli liczbie -23 w kodzie U2 odpowiada w NKB liczba dziesiętna 233, co można sprawdzić dekodując ostatni wiersz (potraktowany jako zapis w NKB):

1* 27 + 1* 26 + 1* 25 + 1* 23 + 1*20 = 128+64+32+8+1=233

Liczba 233 jest tu uzupełnieniem modułu liczby ujemnej do liczby 256.

Sposób B

Liczbę całkowitą a zapisuje się w kodzie U2 na n bitach następująco:

0x08 graphic
0x08 graphic
a jeśli a ≥ 0

-2(n-1) +x jeśli a < 0 i a >- 2(n-1) , gdzie x ≥ 0 (7)

II sposób wg. wzoru (7).

Pierwszy składnik dla n=8 wynosi -128 i jest to waga bitu znaku.

Stąd dla liczby a=-23 mamy: x=2(n-1) +a=27+(-23)=128-23=105.

Liczba 105 powinna być zapisana na bitach b6 b5 b4 b3 b2 b1 b0

Nr bitu

b7

b6

b5

b4

b3

b2

b1

b0

waga

- 128

64

32

16

8

4

2

1

-23u2

1

1

1

0

1

0

0

1

-128

105

=

-23(10)

Sposób C

Liczbę całkowitą a zapisuje się w kodzie U2 na n bitach wg następującego algorytmu:

  1. jeśli a ≥ 0 to liczbę a zapisujemy w NKB,

  2. jeśli a < 0 to:

    1. zapisujemy w NKB moduł liczby a,

    2. negujemy bit po bicie (uzupełnienie do U1),

    3. do najmniej znaczącego bitu tzn b0 dodajemy 1.

Przykład:

Zakodować na n=8 bitach liczbę -23.

Ponieważ liczba jest ujemna postępujemy wg punktu II (sposób C).

Nr bitu

b7

b6

b5

b4

b3

b2

b1

b0

waga

128

64

32

16

8

4

2

1

| 23(10) |

0

0

0

1

0

1

1

1

Punkt IIa

Negacja

1

1

1

0

1

0

0

0

Wynik punktu IIb

+

1

Punkt IIc

Wynik:

1

1

1

0

1

0

0

1

Liczba -23(u2)

W wyniku postępowania bit znaku b7 przyjmuje wartość 1, co oznacza liczbę ujemną.

W tabeli poniżej pokazano liczby charakterystyczne dla 8-bitowego U2 oraz dla porównania ich reprezentacje binarne w kodach: ZM i U1.

n= 8

ZM

0x08 graphic
U1

U2

-128

0x08 graphic
0x08 graphic
-

-

1 0000000

-127

1 1111111

1 0000000

1 0000001

-126

1 1111110

1 0000001

1 0000010

…………..

………

-2

1 0000010

1 1111101

1 1111110

-1

1 0000001

1 1111110

1 1111111

Zero

0 0000000

1 0000000

1 1111111

0 0000000

0 0000000 jedna postać

+1

0 0000001

0 0000001

0 0000001

+2

0 0000010

0 0000010

0 0000010

…………..

+126

0 1111110 111111111111111

0 1111110

0 1111110

+127

0 1111111

0 1111111

0 1111111

Arytmetyka stałoprzecinkowa

W poniższej tabeli przedstawiono operacje dodawania liczb dodatnich przedstawionych w różnych kodach.

Wartości dziesiętne

Wartości w ZM,U1,U2

(reprezentacje 8-bitowe)

Wartości w kodzie BCD- 9 bitów: bit znaku + 2 tetrady

89

0x08 graphic
+ 45

+134

0 1011001

0x08 graphic
0 0101101

(1) 0 0000110

(1)- oznacza przeniesienie, czyli, że wynik jest > 128

Zatem wynik jest:

128 + 6

0 1000 1001

0x08 graphic
0 0100 0101

0 1100 1110

korekcja + 0110 0110

0x08 graphic
(1)0 0011 0100

0x08 graphic
0x08 graphic

Ostatecznie otrzymujemy:

100 + 3 *10 + 4

bo przeniesienie (1) z II tetrady ma wagę 100

Kiedy w kodzie BCD jest korekcja? - gdy po dodaniu wyniki tetrad(y) są większe od liczby 9. Trzeba wtedy do każdej tetrady w której przekroczono zakres kodu BCD dodać liczbę 6.

W kolejnej tabeli przedstawiono odejmowanie liczb w różnych kodach.

War

-tości

Kod ZM

(5-bitów)

U1

U2

BCD

9

0x08 graphic
- 7

+ 2

0 1001

0x08 graphic
- 1 0111

0x08 graphic
0 0010

0 1001

0x08 graphic
+1 1000

0x08 graphic
(1) 0 0001

+ 1

0x08 graphic
0 0010

0 1001

+1 1001

0x08 graphic
0x08 graphic
(1) 0 0010

W U2 przeniesienie

jest ignorowane

0 1001

- 1 0111

0 0010

W kodzie ZM i BCD:

W kodzie U1 operacja odejmowania jest zastąpiona operacja dodawania wszystkich pozycji łącznie z bitem znaku i uwzględnieniem powstałego przeniesienia. Oznacza to konieczność korekcji polegającej na dodaniu 1 do najmniej znaczącej pozycji wyniku.

W kodzie U2 podobnie jak w U1 operacja odejmowania jest zastąpiona operacja dodawania wszystkich pozycji łącznie z bitem znaku, ale nie ma potrzeby korekcji. Przeniesienie jest ignorowane. Ten algorytm jest najszybszy.

Operacje dodawania na liczbach ze znakiem (w kodzie U2)

Należy zrealizować operacje:

  1. 96 -16 co jest tożsame 96 + (-16)

  2. 16 - 96

  3. -16 +(-96)

Ad a) Zamieniamy liczby 96 i -16 na kod U2 i dodajemy te liczby.

Nr bitu

b7

b6

b5

b4

b3

b2

b1

b0

waga

znak

64

32

16

8

4

2

1

Przeniesienie

(1)

1

1

Przeniesienie jest ignorowane

96(u2)

0

1

1

0

0

0

0

0

-16(u2)

+

1

1

1

1

0

0

0

0

Wynik w U2 :

0

1

0

1

0

0

0

0

80(10)

W wyniku operacji otrzymujemy wartość w NKB - świadczy o tym wartość bitu b7=0. Przeniesienie (1) przekracza przyjęty zakres n=8 bitów i jest ignorowane.

Ad b) Zamieniamy liczby 16 i -96 na kod U2 i dodajemy.

Nr bitu

b7

b6

b5

b4

b3

b2

b1

b0

waga

znak

64

32

16

8

4

2

1

Przeniesienie

16(u2)

0

0

0

1

0

0

0

0

-96(u2)

+

1

0

1

0

0

0

0

0

Wynik w U2:

1

0

1

1

0

0

0

0

-80(10)

W wyniku operacji otrzymujemy wartość w U2 bo składniki były w U2. Wartość jest ujemna, bo świadczy o tym wartość bitu b7=1.

Czyli wynik jest: -27+ (wynik w NKB na 6 bitach)=-128+48=-80(10).

Lub inaczej określamy moduł:

28- (wynik z 8 bitów interpretowany w NKB)=256-176=80(10).

Ponieważ o znaku wyniku świadczy b7=1 stąd wynik=-80(10).

Ad c) Zamieniamy liczby -16 i -96 na kod U2 i dodajemy te liczby.

Nr bitu

b7

b6

b5

b4

b3

b2

b1

b0

waga

znak

64

32

16

8

4

2

1

Przeniesienie

(1)

1

1

-16(u2)

1

1

1

1

0

0

0

0

-96(u2)

+

1

0

1

0

0

0

0

0

Wynik:

1

0

0

1

0

0

0

0

-112(10).

W wyniku operacji otrzymujemy wartość ujemną w U2 - świadczy o tym wartość bitu b7=1.

Czyli wynik jest: -27+ (wynik w NKB na 6 bitach)=-128+16=-112(10).

Reprezentacja liczb rzeczywistych

Przy reprezentacji liczb ułamkowych w komputerze nie można formalnie wykorzystać przecinka (bo mogą być tylko zera i jedynki). W praktyce okre­śla się ilość miejsc przeznaczoną na część całkowitą i ułamkową liczby, dzięki czemu wiadomo, jakiej wartości odpowiada dana pozycja. Np. liczba rzeczywista jest reprezentowana na 4 bajtach z czego:

Należy także podkreślić, że ułamki z systemu dziesiętnego podaje się w notacji binarnej najczęściej z określoną dokładnością (jako liczby przybliżone). Dokładność ta jest większa od wartości ostatniej pozycji przeznaczonej na zapis liczby. Przedstawiając np. liczbę 0,3 na 5 bitach, zapiszemy ją jako:

0 01001 (2)= 0,28125(10).

Różnica pomiędzy 0,28125 a 0,3 wynosi 0,01875, co jest mniejsze od

2-5 = 0,03125.

Ułamki dodatnie w kodzie binarnym

W systemie dziesiętnym kolejne pozycje po przecinku odpowiadają kolejnym, ujem­nym potęgom liczby 10.

0.546 = 5*10-1 + 4*10-2 + 6*10-3

W systemie binarnym kolejne pozycje po umownej pozycji oznaczającej położenie przecinka oznaczają kolejne ujemne potęgi liczby 2. Aby w zapisie uwidocznić, że jest to ułamek stosuje się czasem poprzedzającą spację. Np.:

Czasami też można spotkać zapis z przecinkiem: , 1011

Przykład: Zapisać w kodzie binarnym liczbę 0,1875

Działanie

Wynik

Cz. Ułamk.

Cz. Całk.

0,1875*2

0,375

0,375

0

0,375*2

0,75

0,75

0x08 graphic
0

0,75*2

1,5

0,5

0x08 graphic
1

0,5*2

1

0

1

0 *2

0

0

0

itp

Od chwili gdy mnożymy przez zero zawsze
część całkowita będzie zerem - czyli kolejne bity
nigdy nie będą 1, a to oznacza że nie wnoszą
żadnej informacji

Sprawdzenie: 0 0011 = 1*2-3 +1*2-4= 0,125 +0,0625=0,1875

Liczba ułamkowa jest tu reprezentowana dokładnie.

Przykład: Zapisać w kodzie binarnym liczbę 0,1675

Działanie

Wynik

Cz. Ułamk.

Cz. Całk.

0,1675*2

0,335

0,335

0

0,335*2

0,67

0,67

0

0,67*2

1,34

0,34

1

0,34*2

0,68

0,68

0

0,68 *2

1,36

0,36

1

0,36 *2

0,72

0,72

0

0,72*2

1,44

0,44

1

0,44*2

0,88

0,88

0

0,88*2

1,76

0,76

1

itp

Tu kolejne bity wnoszą dodatkową informację, bo
niektóre z nich są jedynkami

Tu reprezentacja liczby 0,1675 nie jest dokładna i zależy od liczby uwzględnionych bitów.

Liczba bitów

Wartość zapisana

Różnica Δ

4

0,125

0.0425

5

0,15625

0,01125

6

0,15625

0,01125

7

0,16406

0,00344

itp

Przy uwzględnianiu n bitów różnica Δ między wartością zapisaną a rzeczywistą spełnia nierówność:

Δ < 2-n

Np. dla n=4 Δ = 0.0425 <2-4 (bo 0.0425 <0,0625)

Wniosek:

Np.: Dla liczby

0,1875 =0 0011

Wystarczą 4 bity na dokładne reprezentowanie ułamka.

Zapis liczby rzeczywistej bez znaku w kodzie binarnym

Przykład: Zapisać w kodzie binarnym liczbę 34,75(10)

Tabela Zamiana liczby 34 NKB

Działanie

Wynik

Reszta

34 :2

17

0x08 graphic
0

17 : 2

8

1

8 : 2

4

0x08 graphic
0

4: 2

2

0

2:2

1

0

1:2

0

1

Tabela Zamiana liczby 0,75 na kod bin.

0x08 graphic

Działanie

Wynik

Cz. Ułamk.

0x08 graphic
Cz. Całk.

0,75 *1

1,5

0,5

1

0,5 *2

1

0

1

100010 11

Stąd dodatnią liczbę rzeczywistą 34,75(10) można zapisać binarnie jako:

34,75(10) = 100010 11

0x08 graphic

Sprawdzenie: 25 +21 +2-1 +2-2 =32 +2 +0.5 + 0.25= 34,75

Reprezentacja ułamków w kodzie U2

Kod U2 umożliwia reprezentację zarówno dodatnich jak i ujemnych liczb rzeczywistych. Stosowany jest powszechnie bowiem ułatwia operacje matematyczne.

Ułamki dodatnie w kodzie U2 zapisuje się w postaci ciągu bitów o wartościach 0 lub 1 w którym jedynki wskazują na kombinacje wag, które po zsumowaniu tworzą liczbę ułamkową . Wagi są kolejnymi ujemnymi potęgami liczby 2 zaczynając od n= -1.

Ułamki ujemne w kodzie U2 koduje się wg wzoru:

2 -X' gdzie: X' - notacja binarna ułamka dodatniego

Przykład: Zapisać w U2 X=-0,1875

Etap 1. Określenie wartości binarnej X'

Działanie

Wynik

Cz. Ułamk.

0x08 graphic
Cz. Całk.

0,1875*2

0,375

0,375

0x08 graphic
0

0,375 *2

0,75

0,75

0

0,75 *2

1,5

0,5

1

0,5 *2

1

0

1

Etap 2 Odjęcie binarne 2 -X'

Pożyczka

1

1

1

1

1

2

1

0 ,

0

0

0

0

X'

-

0

0

0

1

1

-0,1875(U2)

1

1

1

0

1

wagi

2-1

2 -2

2-3

2-4

Pola na prawo od kolorowej linii oznaczają bity części ułamkowej.

Jak sprawdzić poprawność otrzymanej wyżej reprezentacji tzn. że :

-0,1875(U2) = 1 1101 ?.

Można obliczyć 2- |-0. 1875|=1.8125

Czyli powinna być zakodowana w NKB liczba 1.8125. Część całkowita jest tu równa 1, a w interpretacji zapisu jako liczby w U2 ta „1” symbolizuje znak.

Można też sprawdzić poprawność otrzymanej wyżej reprezentacji tzn. że :

-0,1875(U2) = 1 1101

wykonując binarne odejmowanie 2 -X'' (gdzie X'' jest otrzymanym zapisem binarnym ułamka X w kodzie U2)

Pożyczka

Operacja

1

1

1

1

1

2

1

0 ,

0

0

0

0

X'

-

1

1

1

0

1

|-0,1875|

=

0

0

0

1

1

Sprawdzenie: 1* 2-3 + 1*2-4 = 0,125 +0,0625 = 0, 1875

Czyli otrzymany tu wynik jest modułem kodowanego ułamka.

Reprezentacja liczb rzeczywistych w kodzie FP2

W kodzie FP2 (floating point- kod zmiennoprzecinkowy) liczba jest zapisywana w postaci w2ykłaqdniczej tzn. wg wzoru:

L=(-1)S m PC

gdzie: P- podstawa systemu liczenia, m- mantysa, c- cecha
s- wartość bitu znaku („1” -oznacza +, „0”- znak -)

Poniższa tabela przedstawia strukturę 16 bitowego kodu FP2:

znak

cecha

mantysa

bit

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

waga

s

-16

8

4

2

1

2-1

2-2

2-3

2-4

2-5

2-6

2-7

2-8

2-9

2-10

Przykład 1

Przedstawić liczbę 125.75 w kodzie FP2.

Szukamy n takiego, że 125.75<2n i mnożymy liczbę przez 2n i bierzemy część całkowitą liczby.

125.75 * 27 = 125.75*128=16096 (liczba parzysta)

16 096 : 2

0

8 048 : 2

0

4 024 : 2

0

2 012 : 2

0

1 006 : 2

0

503 : 2

0x08 graphic
1

251 : 2

1

125 : 2

1

62 : 2

0

31 : 2

1

15 : 2

1

7 : 2

1

3 : 2

1

1 : 2

1

0

Otrzymujemy:

1 1 1 1 1 0 1 , 1 1 0 0 0 0 0 czyli 125,75

Przesuwamy przecinek w lewo, tak aby był po najbardziej znaczącej jedynce -tu o 6 miejsc :

1 , 1 1 1 1 0 1 1 1 0 0 0 0 0 cecha będzie 26

0x08 graphic

L= (1 + 0.96484375)* 26 =125,75

Czyli liczbę w FP2 możemy zapisać następująco:

125,75 = (0 00110 1111011100)FP2

0x08 graphic

L= (1 + 0.96484375)* 26 =125,75

Wartość liczby L jest w tym przypadku dokładna, ale w ogólnym przypadku liczba jest przedstawiana z pewnym przybliżeniem.

Dekodowanie liczby zapisanej w kodzie FP2

Rozkodujemy teraz z powrotem liczbę w kodzie FP2 z pierwszego przykładu tzn:

(0 01010 1111000000)FP2

Posłuży do tego przedstawiona wcześniej w tabelce struktura kodu FP2.

Rozpatrując kolejne elementy, otrzymujemy:

s = 0, a więc mamy: (-1)0

m = 1111000000, a więc mamy: 2-1 + 2-2 + 2-3 + 2-4

c = (01010)U2 = 10, a więc mamy 210

Składając to razem zgodnie z wzorem, otrzymujemy:

(-1)0 * (20 + 2-1 + 2-2 + 2-3 + 2-4) * 210 =210 + 29 + 28 + 27 + 26 = 1024 + 512 + 256 + 128 + 64 = 1984

0x08 graphic

Widać tu, że zakodowanie liczby w takim a nie innym systemie FP2, za pomocą określonej ilości bitów przeznaczonych na cechę i na mantysę spowodowało ograniczenie dokładności do pewnej liczby miejsc po przecinku (tym już przesuniętym). Stąd utrata dalszej części liczby.

0x08 graphic

Arytmetyka zmiennoprzecinkowa

Operacje arytmetyczne na liczbach zmiennoprzecinkowych wykonywane są zgodnie z regułami, z tym że wynik zapisywany jest również w postaci cecha - mantysa.

Jeżeli (np. w systemie dziesiętnym P=10) określimy dwie liczby A i B tak, że :

0x01 graphic
oraz 0x01 graphic

oraz przyjmiemy, że 0x01 graphic
to:

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

Np.: A=2230 = 0,223E4

B=125 =0,125E3

CA > CB d= CA -CB =4-3=1

A+B=(0,223E4+0.125)E3 =(2,23+0,125)E3 =2,355E3 =0,2355 E4

W podobny sposób możemy zapisywać operacje dodawania, odejmowania, mnożenia i dzielenia jeśli przyjmiemy, że podstawą jest P=2 a nie 10 -jak powyżej.

Kodowanie informacji tekstowej

Do kodowania informacji tekstowej wykorzystuje się

kod ASCII (American Standard Code for Information Interchange). W tym kodzie znaki są:

- 26 małych liter alfabetu łacińskiego

- 26 dużych liter alfabetu łacińskiego

- 10 cyfr

- spacje

- znaki specjalne, np. ! "#$% &

- znaki sterujące (kody ASCII od 0 do 31), np. przejdź do nowego wiersza (oznaczenie LF od Line Feed), powrót karetki do początku wiersza (CR, od słów Carriage Return), tabulator, koniec tekstu (EOT, od słów End of Text)

Obecnie do użytku wprowadzany jest nowy sposób kodowania znaków o nazwie UNICODE. Jest to 16-bitowy standard, w którym jest miejsce na wszystkie alfabety narodowe, dotychczas jeszcze niezbyt powszechny. W przyszłości pozwoli on na uniknięcie niedogodności związanych z ograniczoną pojemnością kodu ASCII i koniecznością  instalowaniem stron kodowych.

Tabela. Kody znakowe ASCII

Dec Hex Bin Znak

Dec Hex Bin Znak

Dec Hex Bin Znak

0 00 0000000 NUL ' 0'

1 01 0000001 SOH

2 02 0000010 STX

3 03 0000011 ETX

4 04 0000100 EOT

5 05 0000101 ENQ

6 06 0000110 ACK

7 07 0000111 BEL '\a'

8 08 0001000 BS '\b'

9 09 0001001 HT '\t'

10 0A 0001010 LF '\n'

11 0B 0001011 VT '\v'

12 0C 0001100 FF '\f'

13 0D 0001101 CR '\r'

14 0E 0001110 SO

15 0F 0001111 SI

16 10 0010000 DLE

17 11 0010001 DC1

18 12 0010010 DC2

19 13 0010011 DC3

20 14 0010100 DC4

21 15 0010101 NAK

22 16 0010110 SYN

23 17 0010111 ETB

24 18 0011000 CAN

25 19 0011001 EM

26 1A 0011010 SUB

27 1B 0011011 ESC

28 1C 0011100 FS

29 1D 0011101 GS

30 1E 0011110 RS

31 1F 0011111 US

32 20 0100000 spacja

33 21 0100001 !

34 22 0100010 ``

35 23 0100011 #

36 24 0100100 $

37 25 0100101 %

38 26 0100110 &

39 27 0100111 '

40 28 0101000 (

41 29 0101001 )

42 2A 0101010 *

43 2B 0101011 +

44 2C 0101100 ,

45 2D 0101101 -

46 2E 0101110 .

47 2F 0101111 /

48 30 0110000 0

49 31 0110001 1

50 32 0110010 2

51 33 0110011 3

52 34 0110100 4

53 35 0110101 5

54 36 0110110 6

55 37 0110111 7

56 38 0111000 8

57 39 0111001 9

58 3A 0111010 :

59 3B 0111011 ;

60 3C 0111100 <

61 3D 0111101 =

62 3E 0111110 >

63 3F 0111111 ?

64 40 1000000 @

65 41 1000001 A

66 42 1000010 B

67 43 1000011 C

68 44 1000100 D

69 45 1000101 E

70 46 1000110 F

71 47 1000111 G

72 48 1001000 H

73 49 1001001 I

74 4A 1001010 J

75 4B 1001011 K

76 4C 1001100 L

77 4D 1001101 M

78 4E 1001110 N

79 4F 1001111 O

80 50 1010000 P

81 51 1010001 Q

82 52 1010010 R

83 53 1010011 S

84 54 1010100 T

85 55 1010101 U

86 56 1010110 V

87 57 1010111 W

88 58 1011000 X

89 59 1011001 Y

90 5A 1011010 Z

91 5B 1011011 [

92 5C 1011100 \ '\\'

93 5D 1011101 ]

94 5E 1011110 ^

95 5F 1011111 _

96 60 1100000 `

97 61 1100001 a

98 62 1100010 b

99 63 1100011 c

100 64 1100100 d

101 65 1100101 e

102 66 1100110 f

103 67 1100111 g

104 68 1101000 h

105 69 1101001 i

106 6A 1101010 j

107 6B 1101011 k

108 6C 1101100 l

109 6D 1101101 m

110 6E 1101110 n

111 6F 1101111 o

112 70 1110000 p

113 71 1110001 q

114 72 1110010 r

115 73 1110011 s

116 74 1110100 t

117 75 1110101 u

118 76 1110110 v

119 77 1110111 w

120 78 1111000 x

121 79 1111001 y

122 7A 1111010 z

123 7B 1111011 {

124 7C 1111100 |

125 7D 1111101 }

126 7E 1111110 ~

127 7F 1111111 DEL

Reprezentacja kolorów i kodowanie grafiki

Reprezentacja kolorów

Kodowanie grafiki 2D

Grafika rastrowa:

Grafika wektorowa:

Grafika 3D

Jest rzedstawiana na płaszczyźnie jako rzut 3 wymiarowej sceny; zaawansowane techniki pozwalają na zmianę projekcji, na „poruszanie się” w prezentowanej przestrzeni (np. gry komputerowe, standardem w Internecie jest format VRML (Virtual Reality Markup Language);

Animacja - formaty MPEG, QuickTime, AVI.

2

Wynik:

1101100(2)

Wynik: 305(8)

Wynik:

110000100(2)

6 0 4 (8)

101 000 100

Wynik:

107d = 6 B h

Rozwiązanie:

Należy zamienić czteroelementowe ciągi cyfr z systemu bi­narnego na cyfry w systemie heksadecymalnym.

0100 1011 0011

4 B 3

Wynik:

4B3

a=

Wynik:

0,1875 =0 0011

Tu wystarczą 4 bity na część ułamkową !

Wynik:

Część całkowita liczby 34,75(10)

34(10)= 1 0 0 0 1 0

Wynik:

Część ułamkowa liczby 34,75(10)

0,75= 0 11

,

X' =0 0011

Jest różnica na najmłodszym bicie!!!

Pierwsze 7 bitów - to część całkowita, dalsze 7 ułamkowa

Ale to jest dopiero reprezentacja binarna liczby ułamkowej a nie liczby w kodzie FP2!!!

0.96484375

mantysa=0.96484375

cecha= 6

Składnik 20 odpowiada jedynce przed przecinkiem, którą zapamiętaliśmy i nie zapisaliśmy w zakodowanej liczbie, oszczędzając jeden bit. Nie wolno o niej zapomnieć podczas rozkodowania liczby.

Precyzja liczby zapisanej w kodzie FP2 zależy od ilości bitów przeznaczonych na mantysę

Zakres liczby zależy od ilości bitów przeznaczonych na cechę.



Wyszukiwarka

Podobne podstrony:
Plan studiów sem II stac i niest Logistyka docx
kody operacyjne, Militaria
Plan studiów sem II, IV, VI BN stac i niest
3 7 i 3 8 pojecie liczby rozumowanie operacyjne
I rok st.stac.1 st. Dokumenty-AON, Testy, sprawdziany, konspekty z historii
Kodowanie kluczyków w samochodach z grupy VV, Diagnostyka dokumety
Pytania egz.MIUT niest. II stop. ZiIP 2014-15, Politechnika Poznańska ZiIP Stopień II (niestacjonarn
zasady grupy, java, javascript, oprogramowanie biurowe, programowanie, programowanie 2, UTK, systemy
Z grupy na linkedin cz 2
Pytania do egzaminu z Systemow Operacyjnych cz, EdukacjaTEB
notatek-pl-socjo2, Stratyfikacja - hierarchiczne uporządkowanie członków grupy według kryterium posi
1 Grupy i ciała, liczby zespolone
Ćwiczenie,Wykrywanie i określanie liczby bakterii z grupy coli
Zabiegi operacyjne na gruczole mlekowym krow cz. I, WROCŁAW, IV ROK, Choroby zwierząt gospodarskich
operacjonalizacja i opis grupy?danej
Liczby zespolone zadania i odpowiedzi cz 2
Klasa II, Zasady żywienia - Podział na grupy produktów spożywczych i ich charakterystyka cz. 2
BADANIA OPERACYJNE cz, Szkoła, Semestr 3, Semestr 3, Badania operacyjne, badopy-czerwiec 2013

więcej podobnych podstron