SlideShare a Scribd company logo
1 of 15
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
liczba nie jest jednorodna
obliczanie wartości:

LZM = (-1)bit znaku × moduł liczby
np.

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) = 1001(2)
 Uzupełnić bitami o wartości 0, by uzyskać o jeden bit mniej niż
długość formatu
 0001001
 Jako najstarszy wpisać bit znaku: 0 dla liczby dodatniej lub 1 dla
liczby ujemnej
 9(10) = 00001001(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
 liczba przeciwna powstaje przez negację wszystkich bitów
 obliczanie wartości ujemnych (n - ilość bitów w liczbie):

LU1 = (-2n-1+1) + moduł liczby
np.

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ł liczby
np.

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 U2
 NOT 01101110= 10010001
 Do wyniku dodać 1

 10010001 + 00000001 = 10010010
Wyznaczanie liczby przeciwnej w kodzie
U2 - sposób 2.
 Przejść do najmłodszego bitu liczby

 0010010000
 Do wyniku przepisać kolejne bity 0, aż do napotkania bitu
1, który też przepisać

 0010010000 Wynik: 10000
 Wszystkie 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 + liczba
 27 + (-45) = 128 - 45 = 83(10) = 1010011(2)
 W razie potrzeby uzupełnić zerami, dodać bit znakowy 1

 11010011(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 formatu
 00101101
 Wyznaczyć 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 = 211
 Zamienić otrzymaną liczbę na postać binarną
 211 = 11010011(2)
 (-45)(10) = 11010011(U2)

zapis ze znakiem

  • 1. Zapis liczby ze znakiem
  • 2. 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
  • 3. 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 liczba nie jest jednorodna obliczanie wartości: LZM = (-1)bit znaku × moduł liczby np. 0011(ZM) = 3(10) przeliczenie: (-1)0 x (21 + 20) 1101(ZM) = -5(10) przeliczenie: (-1)1 x (22 + 20)
  • 4. Przeliczanie liczb dziesiętnych na liczby ZM  Wyznaczyć bity modułu wartości bezwzględnej liczby (bez minusa)  9(10) = 1001(2)  Uzupełnić bitami o wartości 0, by uzyskać o jeden bit mniej niż długość formatu  0001001  Jako najstarszy wpisać bit znaku: 0 dla liczby dodatniej lub 1 dla liczby ujemnej  9(10) = 00001001(ZM)
  • 5. 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  liczba przeciwna powstaje przez negację wszystkich bitów  obliczanie wartości ujemnych (n - ilość bitów w liczbie): LU1 = (-2n-1+1) + moduł liczby np. 0101(U1) = 5(10 ) przeliczenie: 22 + 20 1001(U1) = -6(10) przeliczenie: (-23+ 1) + 20
  • 6. 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)
  • 7. 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)
  • 8. 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)
  • 9. 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ł liczby np. 0011(U2) = 4(10 ) przeliczenie: 21 + 20 1011(U2) = -5(10 ) przeliczenie: (-23) + 21 + 20
  • 10. Wyznaczanie liczby przeciwnej w kodzie U2  Zanegować wszystkie bity w zapisie U2  NOT 01101110= 10010001  Do wyniku dodać 1  10010001 + 00000001 = 10010010
  • 11. Wyznaczanie liczby przeciwnej w kodzie U2 - sposób 2.  Przejść do najmłodszego bitu liczby  0010010000  Do wyniku przepisać kolejne bity 0, aż do napotkania bitu 1, który też przepisać  0010010000 Wynik: 10000  Wszystkie pozostałe bity zanegować i przepisać  Wynik: 1101110000
  • 12. 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)
  • 13. Przeliczanie ujemnych liczb dziesiętnych na liczby U2  Wyznaczyć wartość 2n-1 + liczba  27 + (-45) = 128 - 45 = 83(10) = 1010011(2)  W razie potrzeby uzupełnić zerami, dodać bit znakowy 1  11010011(U2)
  • 14. 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 formatu  00101101  Wyznaczyć liczbę przeciwną  (-45)(10) = 11010011(U2)
  • 15. Przeliczanie ujemnych liczb dziesiętnych na liczby U2 - sposób 3.  Do liczby 2n dodać przeliczaną liczbę dziesiętną  28 + (-45) = 256 - 45 = 211  Zamienić otrzymaną liczbę na postać binarną  211 = 11010011(2)  (-45)(10) = 11010011(U2)