|
Serwis Edukacyjny Nauczycieli I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
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
gdzie b - bit, cyfra dwójkowa 0 lub 1 |
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). |
Zapamiętaj:Procedura przeliczania liczby dziesiętnej na dwójkowy zapis z nadmiarem
|
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)= 01101001(BIAS=129) |
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
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 = 23posiadają zakres:
| od | -bias | = | -8 | = 0000(BIAS=8) |
| do | 24- 1 - bias | = | 7 | = 1111(BIAS=8) |
8-bitowe liczby w kodzie z nadmiarem bias = 128 = 27posiadają zakres:
| od | -bias | = | -128 | = 00000000(BIAS=128) |
| do | 28- 1 - bias | = | 127 | = 11111111(BIAS=128) |
16-bitowe liczby w kodzie z nadmiarem bias = 32768 = 215posiadają zakres:
| od | -bias | = | -32768 | = 0000000000000000(BIAS=32768) |
| do | 216- 1 - bias | = | 32767 | = 1111111111111111(BIAS=32768) |
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 xbias |
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 | |
| + | 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 |
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 |
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.
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
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.