You are on page 1of 3

Reprezentacja binarna liczb ujemnych Mamy do dyspozycji bitw. Ile rnych wartoci moemy zapisa? Oczywicie 2 .

. Jeli chcemy mie tylko liczby nieujemne, to moemy zapisa wartoci: 0,1, . . . , 2 1. Liczba 2 1 jest najwiksz liczb, jak moemy zapisa na bitach. Jednym z najprostszych metod kodowania liczb ujemnych jest kodowanie znakmodu, polega ono na tym, e jeden bit przeznaczamy na zapisanie informacji o znaku liczby. Na pozostaych 1 bitach zapisujemy warto bezwzgldn liczby w naturalnym kodzie binarnym. Innym kodowaniem, stosowanym powszechnie w komputerach, jest kodowanie uzupenieniowe (zwane take kodem uzupenieniowym do 2, w skrcie U2). Po pierwsze chcemy mie tyle samo zapisanych liczb ujemnych ile nieujemnych. Chcemy take, eby kody liczb dodatnich byy zgodne z ich naturalnym kodem binarnym. Mamy do dyspozycji 2 rnych kodw. Za pomoc 2kodw zapisujemy liczby ujemne, a za pomoc pozostaych 2 liczby nieujemne. Wynika std, e moemy zapisa nastpujce liczby x x nieujemne: ujemne: 0,1, . . . , 2 1 1, 2, . . . , 2

Sposb odwzorowania liczb z przedziau 2 , 2 1 w zbir naturalnych kodw binarnych przedstawia ponisza tabela. Kod Warto 0 0 1 1 ... ... 2 1 2 1 2 2 2 2 ... ... 2 2 2 2 1 1

Kodowanie U2 moemy traktowa jako funkcj U2: 2 , 2 1 0, 2 1. Definicja n-bitowego kodu U2 Kod uzupenieniowy liczby obliczamy wedug wzoru: , 0 ||, 2 0 (1)

Zapis oznacza kod uzupenieniowy liczby . Wartoci po prawej stronie we wzorze (1) naley interpretowa jako naturalne kody binarne odpowiednich liczb dodatnich. Przykad. Zapiszmy w 7bitowym kodzie U2 nastpujce liczby cakowite: 0, 2, 25, 2, 25. 0 0000000 2 0000010 25 0011001 2 2 2 126 1111110 25 2 25 103 1100111

Na kodach moemy wykonywa dziaania arytmetyczne, traktujc je tak jak zwyke liczby binarne. Dziaania wykonujemy modulo 2 (czyli obcinamy wynik do bitw). Wasnoci kodowania U2 Zauwamy jak dodamy liczby 25 i 25 zapisane w 7bitowym kodzie U2, to otrzymamy 10000000 2 . Podobnie dodajc dowolne dwie liczby przeciwne w bitowym kodzie U2 otrzymamy 2 , czyli 0 (mod 2 ). Wynika to ze wzoru (1). Zauwamy, e liczby ujemne maj najbardziej znaczcy bit rwny 1, poniewa najmniejszy kod liczby ujemnej, 2 2 2 , skada si z jedynki i 1 zer. Zbadamy teraz zaleno midzy bitowym kodem naturalnym liczby dodatniej , a kodem uzupenieniowym U2 liczby do niej przeciwnej. Niech bdzie z przedziau 0, . . . , 2 . Mamy wic 2

Poszukujemy teraz bitowego kodu U2 liczby . Z definicji kodu U2, kod liczby jest kodem naturalnym liczby dodatniej 2 ||. 2 | | 2 | | 2 2 1 2 2 1 2 2

1 1 2 1 2 1 gdzie oznacza naturalny kod binarny liczby z zanegowanymi bitami (jedynki zamieniamy na zera i na odwrt). W czwartej rwnoci wykorzystalimy fakt, e 2 moemy zapisa jako 2 . Kod liczby ujemnej moemy interpretowa jako pewn liczb bitow . Przy oznaczeniu otrzymujemy nastpujc zaleno: 1

Oznacza to, e jeli chcemy otrzyma kod liczby przeciwnej do liczby dodatniej , naley wzi kod liczby zamieni bity na przeciwne i doda jeden. Na odwrt, jeli dysponujemy kodem U2 pewnej liczby ujemnej, to aby otrzyma kod liczby do niej przeciwnej, naley odj jedynk i zamieni bity otrzymanego wyniku na przeciwne. 1 Zauwamy jednak, e skoro 2 ||, to przy naszych oznaczeniach mamy 2 a zatem rwnie (analogiczne obliczenia) 1

Algorytm znajdowania kodu liczby przeciwnej w kodowaniu U2 Z powyszych rozwaa wynika nastpujcy algorytm zamiany liczby zapisanej w kodzie U2 na liczb przeciwn. Zamieniamy bity kodu reprezentujcego liczb na przeciwne i do wyniku dodajemy . Otrzymany kod jest kodem liczby . Przykad. Mamy bitowy kod U2 pewnej liczby i chcemy si dowiedzie, co to za liczba. Jeeli ty bit jest jedynk, to znaczy, e mamy do czynienia z kodem liczby ujemnej. Ze wzoru (1) otrzymujemy | | 2 . Jeeli natomiast ty bit jest zerowy, to zakodowana liczba jest dodatnia, zatem jej kod U2 jest rwnoczenie jej kodem naturalnym. Niech 101011 bdzie 6bitowym kodem U2 pewnej liczby. Jaka to liczba? Widzimy, e jest to liczba ujemna, obliczamy wic 101011 26 43 64 21. Drugi sposb. Obliczamy kod liczby przeciwnej (wiemy, e liczba przeciwna bdzie dodatnia, wic atwo j wyznaczymy majc jej kod) zamieniamy bity na przeciwne 010100 i dodajc jedynk otrzymujemy kod 010101, ktry oznacza liczb 010101 21. Zatem wyjciowy kod oznacza liczb 21.

You might also like