znak
Click here to load reader
Transcript of znak
Zapis liczby ze znakiem
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
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)
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)
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
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)
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)
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)
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
Wyznaczanie liczby przeciwnej w kodzie U2
Zanegować wszystkie bity w zapisie U2NOT 01101110= 10010001Do wyniku dodać 110010001 + 00000001 = 10010010
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
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)
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)
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)
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)