znak

15

Click here to load reader

Transcript of znak

Page 1: znak

Zapis liczby ze znakiem

Page 2: znak

Kod uzupełnieniowy

Binarny zapis liczby całkowitej, w którym najstarszy bit jest bitem znaku, a pozostałe to bity modułu, oznaczające liczbę. Moduł jest zawsze zapisany w naturalnym kodzie binarnym.

np.     11010101110110  bit znaku  bity modułu

Page 3: znak

Kod znak-moduł (ZM)

jeśli bit znaku ma wartość 0, liczba jest nieujemna, jeśli ma 1, jest niedodatnia

dwie reprezentacje 0 zakres dla 1 bajta: od -127 do 127 w działaniach uczestniczą tylko moduły liczb obliczanie wartości:LZM = (-1)bit znaku × moduł liczbynp.    0011(ZM) = 3(10)  przeliczenie: (-1)0 x (21 + 20)            1101(ZM) = -5(10) przeliczenie: (-1)1 x (22 + 20)

Page 4: znak

Przeliczanie liczb dziesiętnych na liczby ZM

Wyznaczyć bity modułu wartości bezwzględnej liczby (bez minusa)

9(10) = 1101(2) Uzupełnić bitami o wartości 0, by uzyskać o jeden bit mniej niż

długość formatu 0001101 Jako najstarszy wpisać bit znaku: 0 dla liczby dodatniej lub 1

dla liczby ujemnej 9(10) = 00001101(ZM)

Page 5: znak

Kod uzupełnień do jedności (U1)

jeśli bit znaku ma wartość 0, liczba jest nieujemna, jeśli ma 1, jest niedodatnia

dwie reprezentacje 0 zakres dla 1 bajta: od -127 do 127 wartości dodatnie oblicza się tak, jak w naturalnym kodzie binarnym obliczanie wartości ujemnych (n - ilość bitów w liczbie): LU1 = (-2n-1+1) + moduł liczbynp.    0101(U1) = 5(10 )  przeliczenie: 22  + 20           1001(U1) = -6(10) przeliczenie: (-23+ 1) + 20

Page 6: znak

Przeliczanie dodatnich liczb dziesiętnych na liczby U1

Wyznaczyć bity w systemie binarnym 76(10) = 1001100(2) Uzupełnić bitami o wartości 0 do długości formatu 76(10) = 01001100(U1)

Page 7: znak

Przeliczanie ujemnych liczb dziesiętnych na liczby U1

Wyznaczyć bity modułu wartości bezwzględnej liczby (bez minusa)

113(10) = 1110001(2)

Uzupełnić bitami o wartości 0 do długości formatu 01110001 Zanegować wszystkie bity (nadać im wartości przeciwne) -113(10) = NOT 01110001 = 10001110(U1)

Page 8: znak

Przeliczanie ujemnych liczb dziesiętnych na liczby U1 - sposób 2.

Wyznaczyć wartość 2n - 1 + liczba 28 - 1 + (-113) = 256 - 1 - 113 = 142 Otrzymaną wartość zakodować w naturalnym systemie

binarnym 142(10) = 10001110(2)

(-113)(10) = 10001110(U1)

Page 9: znak

Kod uzupełnień do dwóch (U2)

najczęściej używany -  działania wykonywane jak na zwykłych liczbach binarnych jeśli bit znaku ma wartość 0, liczba jest dodatnia lub równa 0, jeśli ma 1,

jest ujemna jedna reprezentacja 0, zawsze o jedną więcej liczb ujemnych niż dodatnich zakres dla 1 bajta: od -128 do 127 wartości dodatnie oblicza się tak, jak w naturalnym kodzie binarnym obliczanie wartości ujemnych (n - ilość bitów w liczbie):LU2 = (-2n-1) + moduł liczbynp.    0011(U2) = 4(10 )  przeliczenie: 21 + 20

             1011(U2) = -5(10 )  przeliczenie: (-23) + 21 + 20

Page 10: znak

Wyznaczanie liczby przeciwnej w kodzie U2

Zanegować wszystkie bity w zapisie U2NOT 01101110= 10010001Do wyniku dodać 110010001 + 00000001 = 10010010

Page 11: znak

Wyznaczanie liczby przeciwnej w kodzie U2 - sposób 2.

Przejść do najmłodszego bitu liczby0010010000Do wyniku przepisać kolejne bity 0, aż do napotkania bitu

1, który też przepisać0010010000  Wynik: 10000Wszystkie pozostałe bity zanegować i przepisaćWynik: 1101110000

Page 12: znak

Przeliczanie dodatnich liczb dziesiętnych na liczby U2

Wyznaczyć bity w systemie binarnym 76(10) = 1001100(2) Uzupełnić bitami o wartości 0 do długości formatu 76(10) = 01001100(U2)

Page 13: znak

Przeliczanie ujemnych liczb dziesiętnych na liczby U2

Wyznaczyć wartość 2n-1 + liczba27 + (-45) = 128 - 45 = 83(10) = 1010011(2)

W razie potrzeby uzupełnić zerami, dodać bit znakowy 111010011(U2)

Page 14: znak

Przeliczanie ujemnych liczb dziesiętnych na liczby U2 - sposób 2.

Wyznaczyć zapis binarny liczby przeciwnej (dodatniej)45(10) = 101101(2)

Uzupełnić bitami 0 do długości formatu00101101Wyznaczyć liczbę przeciwną(-45)(10) = 11010011(U2)

Page 15: znak

Przeliczanie ujemnych liczb dziesiętnych na liczby U2 - sposób 3.

Do liczby 2n dodać przeliczaną liczbę dziesiętną28 + (-45) = 256 - 45 = 211Zamienić otrzymaną liczbę na postać binarną211 = 11010011(2)

(-45)(10) = 11010011(U2)