Zapis w systemie z nadmiarem


Podrozdziały Tematy pokrewne

Wartość liczby z nadmiarem

Załóżmy, iż chcielibyśmy otrzymać kod dwójkowy, w którym zachowany byłby naturalny porządek rosnący kolejnych słów kodowych. Na przykład dla 3 bitowego kodu słowa kodowe kolejnych liczb układałyby się następująco: 000, 001, 010, 011, 100, 101, 110, 111. Słowo kodowe 000 powinno określać liczbę najmniejszą, a słowo kodowe 111 liczbę największą. Dotychczas poznane kody liczb binarnych ze znakiem nie spełniają tego warunku:

 

Kolejność 3 bitowych słów kodowych
ZM 111
(-3)
110
(-2)
101
(-1)
100
0
000
0
001
1
010
2
011
3
U1 100
(-3)
101
(-2)
110
(-1)
111
0
000
0
001
1
010
2
011
3
U2 100
(-4)
101
(-3)
110
(-2)
111
(-1)
000
0
001
1
010
2
011
3

 

Umówmy się zatem, iż wartość binarna słowa kodowego jest równa kodowanej liczbie pomniejszonej o pewną stałą zwaną nadmiarem (ang. excess lub bias). W zależności od tej stałej słowa kodowe będą oznaczały różne liczby. W poniższej tabelce zebraliśmy kilka przykładów takich kodów:

 

Wartości słów kodowych w systemach z nadmiarem
KOD Wartości nadmiaru - bias
4 3 2 1 0 (-1) (-2) (-3) (-4)
000 -4 -3 -2 -1 0 1 2 3 4
001 -3 -2 -1 0 1 2 3 4 5
010 -2 -1 0 1 2 3 4 5 6
011 -1 0 1 2 3 4 5 6 7
100 0 1 2 3 4 5 6 7 8
101 1 2 3 4 5 6 7 8 9
110 2 3 4 5 6 7 8 9 10
111 3 4 5 6 7 8 9 10 11

 

Zwróć uwagę, iż w zależności od nadmiaru możemy otrzymywać różne zakresy kodowanych liczb. Przykładowo dla przedstawionego w tabeli 3 bitowego kodu i nadmiaru 4 otrzymujemy zakres od -4 do 3. Nadmiar można tak dobrać, aby zakres w całości zawierał się po stronie liczb ujemnych lub dodatnich. Zatem kod ten jest bardzo elastyczny pod tym względem.

Do jednoznacznej definicji kodu z przesunięciem potrzebne są dwa parametry: n - ilość bitów słowa kodowego oraz bias - wartość nadmiaru. Znając je możemy jednoznacznie obliczyć wartość każdego słowa kodowego:

 

Zapamiętaj:

Wartość dziesiętna liczby zapisanej w dwójkowym kodzie z nadmiarem

 

bn-1bn-2...b2b1b0 (BIAS) = bn-12n-1 + bn-22n-2 + ... + b222 + b121 + b020 - bias

 

gdzie

b - bit, cyfra dwójkowa 0 lub 1
n - liczba bitów w zapisie liczby
bias - nadmiar, odchyłka w stosunku do naturalnych wartości słów kodowych

 

Przykład:

Dla kodu z nadmiarem bias = 129(10) oblicz wartość słowa kodowego 11111111(BIAS=129).

 

11111111(BIAS=129) = 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 - 129
11111111(BIAS=129) = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 - 129
11111111(BIAS=129) = 255 - 129
11111111(BIAS=129) = 126(10).

 

Przykład:

Dla kodu z nadmiarem bias = 63(10) oblicz wartość słowa kodowego 00011111(BIAS=63).

 

00011111(BIAS=63) = 24 + 23 + 22 + 21 + 20 - 63
00011111(BIAS=63) = 16 + 8 + 4 + 2 + 1 - 63
00011111(BIAS=63) = 31 - 63
00011111(BIAS=63) = (-32)(10).

 

Przeliczanie liczb dziesiętnych na liczby z nadmiarem

 

Zapamiętaj:

Procedura przeliczania liczby dziesiętnej na dwójkowy zapis z nadmiarem

  1. Do wartości liczby dziesiętnej dodaj nadmiar bias. Otrzymasz w ten sposób wartość dziesiętną binarnego zapisu liczby w systemie dwójkowym z nadmiarem.
  2. Obliczoną wartość słowa kodowego przelicz na system dwójkowy.
  3. Wynikowe słowo binarne uzupełnij bitami o wartości 0 do długości formatu.

 

Przykład:

Przeliczyć liczbę dziesiętną 95(10) na zapis w 8-bitowym kodzie z nadmiarem 129(10).

Obliczamy wartość dziesiętną słowa kodowego:

 

95 + 129 = 224

 

Otrzymaną wartość słowa kodowego przeliczamy na system dwójkowy:

 

224(10) = 11100000(2)

 

Wyliczone w ten sposób słówko kodowe jest reprezentacją liczby 95 w kodzie dwójkowym z nadmiarem 129:

 

95(10) = 11100000(BIAS=129)

 

Przykład:

Przeliczyć liczbę dziesiętną (-24)(10) na zapis w 8-bitowym kodzie z nadmiarem 129(10).

Obliczamy wartość dziesiętną słowa kodowego:

 

(-24) + 129 = 105

 

Otrzymaną wartość słowa kodowego przeliczamy na system dwójkowy:

 

105(10) = 1101001(2)

 

Wyliczone w ten sposób słówko kodowe uzupełniamy jednym bitem zero do długości 8 bitów otrzymując zapis liczby (-24)(10) w kodzie dwójkowym z nadmiarem 129:

 

(-24)(10) = 01101001(BIAS=129)

 

Zakres liczb z nadmiarem

Słowa kodowe tworzą ciąg rosnący w naturalnym systemie binarnym. Najmniejszym co do wartości słowem kodowym jest 0...0, a największym 1...1. Zakres będzie zatem zawierał się w przedziale liczb całkowitych od wartości dziesiętnej pierwszego słowa kodowego do wartości dziesiętnej ostatniego słowa kodowego.

Zgodnie z podanym na początku wzorem obliczania wartości liczby zapisanej w kodzie dwójkowym z nadmiarem pierwsze słowo kodowe ma wartość:

 

min(BIAS) = 0...0(BIAS) = 0 - bias

 

Ostatnie słowo kodowe ma wartość:

 

max(BIAS) = 1...1(BIAS) = 2n - 1 - bias

 

Zatem:

 

Zapamiętaj:

Zakres n bitowej liczby dwójkowej w kodzie z nadmiarem bias

 

Z(BIAS) = -bias ... 2n - 1 - bias

 

Zakres może być dowolnie przesuwany na osi liczbowej poprzez zmianę odchylenia. Dzięki temu zawsze można go dopasować do bieżących potrzeb obliczeniowych

 

Przykład:

4 bitowe liczby w kodzie z nadmiarem bias = 8 = 23 posiadają zakres:

od  -bias  =  -8  = 0000(BIAS=8)
do  24 - 1 - bias  =  7  = 1111(BIAS=8)

 

8 bitowe liczby w kodzie z nadmiarem bias = 128 = 27 posiadają zakres:

od  -bias  =  -128  = 00000000(BIAS=128)
do  28 - 1 - bias  =  127  = 11111111(BIAS=128)

 

16 bitowe liczby w kodzie z nadmiarem bias = 32768 = 215 posiadają zakres:

od  -bias  =  -32768  = 0000000000000000(BIAS=32768)
do  216 - 1 - bias  =  32767  = 1111111111111111(BIAS=32768)

 


DLA
GENIUSZA

Arytmetyka liczb z nadmiarem

Dodawanie

Aby ustalić reguły dodawania liczb zapisanych w dwójkowym kodzie z nadmiarem dokonajmy prostych wyliczeń. Kod binarny liczby w zapisie z nadmiarem ma wartość:

 

c(BIAS) = liczba + bias

 

Suma dwóch kodów da nam:

 

c1 (BIAS) = liczba1 + bias
c2 (BIAS) = liczba2 + bias

c1 (BIAS) + c2 (BIAS) = (liczba1 + liczba2) + 2 x bias

 

Wynika stąd, iż prosta suma dwóch słów kodowych prowadzi do wyniku, który jest za duży o wartość nadmiaru. Aby zatem otrzymać słowo kodowe odpowiadające sumie liczb, należy od wyniku dodawania odjąć nadmiar:

 

c1+2 (BIAS) = (liczba1 + liczba2) + bias = c1 (BIAS) + c2 (BIAS) - bias

 

Przykład:

Wykonać operację 0011(BIAS=7) + 1010(BIAS=7).

 

  0011
+  1010
  1101
- 0111
  0110

 

0011(BIAS=7) + 1010(BIAS=7) = 0110(BIAS=7).

 

Sprawdźmy, czy otrzymaliśmy poprawny wynik. W tym celu policzymy wartość wszystkich słówek kodowych:

 

0011(BIAS=7) = 3 - 7 = -4
1010(BIAS=7) = 10 - 7 = 3
0110(BIAS=7) = 6 - 7 = -1

 

-4 + 3 = -1 - wynik prawidłowy

 

Odejmowanie

Przy wyprowadzeniu wzoru na odejmowanie postąpimy podobnie jak dla dodawania:

 

c(BIAS) = liczba + bias

 

Różnica dwóch kodów da nam:

 

c1 (BIAS) = liczba1 + bias
c2 (BIAS) = liczba2 + bias

c1 (BIAS) - c2 (BIAS) = (liczba1 - liczba2)

 

Wynika stąd, iż prosta różnica dwóch słów kodowych prowadzi do wyniku, który jest za mały o wartość nadmiaru. Aby zatem otrzymać słowo kodowe odpowiadające różnicy liczb, należy do wyniku odejmowania dodać nadmiar:

 

c1-2 (BIAS) = (liczba1 - liczba2) + bias = c1 (BIAS) - c2 (BIAS) + bias

 

Przykład:

Wykonać operację 1011(BIAS=7) - 1110(BIAS=7).

 

  1011
-  1110
  11101
+ 0111
  10100

 

1011(BIAS=7) + 1110(BIAS=7) = 0100(BIAS=7).

 

Sprawdźmy, czy otrzymaliśmy poprawny wynik. W tym celu policzymy wartość wszystkich słówek kodowych:

 

1011(BIAS=7) = 11 - 7 = 4
1110(BIAS=7) = 14 - 7 = 7
0100(BIAS=7) = 4 - 7 = -3

 

4 - 7 = -3 - wynik prawidłowy

 

Zadania

Zadanie 1 (łatwe)

Oblicz wartość dziesiętną podanych liczb w dwójkowym z nadmiarem
1101(BIAS=9) =  (10)  

.

1110(BIAS=8) =  (10)  

.

0011(BIAS=7) =  (10)  

.

1001(BIAS=6) =  (10)  

.

0110(BIAS=5) =  (10)  

.

 

Zadanie 2 (łatwe)

Przelicz podane liczby dziesiętne na ich zapis w 4-bitowym kodzie z nadmiarem
5(10) (BIAS=7)  

.

-5(10) (BIAS=9)  

.

8(10) (BIAS=6)  

.

3(10) (BIAS=8)  

.

-4(10) (BIAS=5)  

.

 

Zadanie 3 (łatwe)

Wykonaj podane działania arytmetyczne na liczbach w kodzie z nadmiarem
0111(BIAS=8)  + 1000(BIAS=8)  =  (BIAS=8)  

.

1111(BIAS=5)  + 0001(BIAS=5)  =  (BIAS=5)  

.

0100(BIAS=9)  + 1011(BIAS=9)  =  (BIAS=9)  

.

0011(BIAS=7)  - 1001(BIAS=7)  =  (BIAS=7)  

.

1000(BIAS=6)  - 1100(BIAS=6)  =  (BIAS=6)  

.

 

Zadanie 4 (średnie)

Mamy dane słowo kodowe w zapisie z nadmiarem, które reprezentuje pewną liczbę. Wyprowadź wzór, który pozwoli wyznaczyć słowo kodowe dla liczby przeciwnej. Określ warunki istnienia takiego słowa kodowego.

 

Zadanie 5 (średnie)

Co się stanie, gdy do słowa kodowego w zapisie z nadmiarem dodamy naturalny kod binarny wartości n (załóż, iż wynik mieści się w zakresie)? Czy to samo zachodzi dla operacji odejmowania w tym kodzie?

 


Zobacz dalej...

Zapis znak-moduł - ZM | Zapis uzupełnień do 1 - U1 | Zapis uzupełnień do 2 - U2 | Podsumowanie systemów dwójkowych



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.