binarna ze znakiem

background image

Zapis liczb binarnych ze

znakiem

background image

W tej prezentacji:



Zapis Znak-Moduł (ZM)



Zapis uzupełnień do 1 (U1)



Zapis uzupełnień do 2 (U2)

background image



Koncepcyjnie zapis znak - moduł

(w skrócie ZM - ang.

SM Signed Magnitude)

jest najbardziej zbliżony do

systemu zapisu liczb używanego przez nas samych.
Liczba ZM składa się z dwóch części - bitu znaku oraz
bitów wartości liczby

(modułu)

:

b

n-1

b

n-2

b

n-3

... b

2

b

1

b

0

b

n-1

- bit znaku liczby

b

n-3

... b

0

- bity modułu liczby



Dla liczb dodatnich i zera bit znaku ma wartość 0, dla
liczb ujemnych i zera ma wartość 1. Format zapisu ZM
musi być ściśle ustalony, aby wiadomo było, który bit jest

bitem znaku - w operacjach arytmetycznych bit znaku
musimy traktować inaczej niż inne bity.

Zapis Znak-Moduł (ZM)

background image

Wartość dziesiętna liczby
w zapisie ZM



Moduł liczby ZM jest zapisany w

naturalnym kodzie

dwójkowym NBC

, zatem w celu obliczenia jej wartości

moduł mnożymy przez 1, gdy bit znaku wynosi 0 lub
przez -1, gdy bit znaku wynosi 1. Wzór jest nast
ępujący:

L

ZM

=

(-1)

bit znaku

x

moduł liczby



Rozpisując poszczególne bity otrzymujemy:

b

n-1

b

n-2

...b

2

b

1

b

0

=

(-1)b

n-1

(b

n-2

2

n-2

+ ... + b

2

2

2

+ b

1

2

1

+ b

0

2

0

)

gdzie

b

- bit, cyfra dwójkowa 0 lub 1

n

- liczba bitów w zapisie liczby

background image

Przykład 1



Obliczyć wartość dziesiętną liczby 10110111

(ZM)

.



Pierwszy bit zapisu ZM jest bitem znaku. Wartość 1
informuje nas, iż jest to liczba ujemna. Pozostałe bity
tworzą wartość liczby.



Moduł jest zapisany w

naturalnym systemie dwójkowym

,

zatem:

1

0110111

(ZM)

=

(-1)

1

(2

5

+ 2

4

+ 2

2

+ 2

1

+ 2

0

)

1

0110111

(ZM)

= - (32 + 16 + 4 + 2 + 1)

1

0110111

(ZM)

= - 55

(10)

background image

Przykład 2



Obliczyć wartość dziesiętną liczby 00011111

(ZM)

.



Bit znaku ma wartość 0, zatem jest to liczba dodatnia.
Wartość tej liczby jest równa wartości jej modułu
zapisanego w

naturalnym kodzie dwójkowym

.

0

0011111

(ZM)

=

(-1)

0

(2

4

+ 2

3

+ 2

2

+ 2

1

+ 2

0

)

0

0011111

(ZM)

= (16 + 8 + 4 + 2 + 1)

0

0011111

(ZM)

= 31

(10)

background image

Procedura wyznaczania zapisu ZM liczby
dziesiętnej

1.

Jeśli liczba jest dodatnia, to bit znaku ma wartość 0. W
przeciwnym razie bit znaku ma wartość 1.

2.

Obliczamy wartość absolutną liczby, czyli jej moduł.

3.

Wyznaczamy bity modułu

4.

Otrzymane bity modułu uzupełniamy w miarę potrzeby
bitami o wartości 0, aby otrzymać ustaloną w formacie
liczbę bitów dla modułu.

5.

Do bitów modułu dodajemy bit znaku i otrzymujemy
zapis ZM.

background image

Przykład

Przedstawić w 8-mio bitowym kodzie ZM liczbę o

wartości dziesiętnej -9.



Wyznaczamy bit znaku. Liczba -9 jest ujemna, zatem b

7

= 1

(najstarszy bit)

.



Wartość absolutna z -9 to 9

(po prostu opuszcza się

znak -)

.



Obliczamy

zapis dwójkowy

modułu 9

(10)

= 1001

(2)

.



Moduł 8-mio bitowej liczby ZM składa się z 7 bitów,

zatem do otrzymanego wyniku dodajemy trzy

początkowe zera otrzymując 0001001.



Łączymy bit znaku 1 z bitami modułu 0001001 i
dostajemy zapis ZM liczby -9

(10)

= 10001001

(ZM)

background image

Zakres liczb w zapisie ZM

Zadanie polega na znalezieniu najmniejszej i
największej wartości liczby, którą da się przedstawić w
danym zapisie ZM. Łatwo zauważyć, że w obu

przypadkach moduł musi mieć wartość maksymalną, a
bit znaku 1 dla wartości najmniejszej i 0 dla wartości
największej. Ponieważ moduł jest zapisany w

naturalnym kodzie dwójkowym NBC, jego wartość jest
równa

maksymalnej wartości

n-1 bitowej liczby

dwójkowej. Dla n bitów otrzymujemy:

min

(ZM)

= 1b

n-2

b

n-3

...b

2

b

1

b

0

= (-1) (b

n-2

2

n-2

+ b

n-3

2

n-3

+ ...b

2

2

2

+ b

1

2

1

+ b

0

2

0

) = -2

n-1

+ 1

max

(ZM)

= 0b

n-2

b

n-3

...b

2

b

1

b

0

= 1 (b

n-2

2

n-2

+ b

n-3

2

n-3

+ ...b

2

2

2

+ b

1

2

1

+ b

0

2

0

) = 2

n-1

- 1

background image

Zakres liczby w zapisie ZM

Zakres n bitowej liczby w kodzie ZM wynosi

Z

(ZM)

= <-2

n-1

+ 1, 2

n-1

- 1>

background image

Zapis U1



Drugim podejściem do rozwiązania problemu
liczb ze znakiem jest system uzupełnień do 1
zwany systemem U1

(ang. 1C - One's

Complement)

.



W systemie tym wszystkie bity zapisu liczby
posiadają swoje wagi

(w ZM bit znaku nie

posiadał wagi)

.



Najstarszy bit jest bitem znaku i ma wagę równą
(-2

n-1

+1)

, gdzie n oznacza ilość bitów w zapisie

liczby.



Pozostałe bity posiadają wagi takie jak w

naturalnym systemie dwójkowym

background image

Wartość dziesiętna liczby w zapisie U1

Wartość liczby U1 obliczamy zgodnie z

poznanymi zasadami

- cyfry mnożymy przez

wagi pozycji, na których się znajdują i dodajemy
otrzymane iloczyny:

b

n-1

b

n-2

b

n-3

...b

2

b

1

b

0 (U1)

=

b

n-1

(-2

n-1

+1)

+ b

n-2

2

n-2

+ b

n-3

2

n-3

+ ... +

b

2

2

2

+ b

1

2

1

+ b

0

2

0

gdzie:

b

- bit, cyfra dwójkowa 0 lub 1

n

- liczba bitów w zapisie liczby

background image

Przeliczanie liczb dziesiętnych
na zapis U1



Jeśli liczba jest dodatnia, to najstarszy bit znakowy
posiada wartość

0

. Pozostałe bity służą do zapisu liczby

w naturalnym kodzie binarnym:

0

111

(U1)

= 7

(10)

,

0

001

(U1)

= 1

(10)

,

0

1111111

(U1)

= 127

(10)



Jeśli liczba jest ujemna, to najstarszy bit znakowy ma
wartość

1

. Pozostałe bity są

negacjami

bitów modułu

wartości liczby:

1

101

(U1)

= (-2)

(10)

:

moduł 2

(10)

= 010

(2)

: NOT 010 =

101

1

100

(U1)

= (-3)

(10)

:

moduł 3

(10)

= 011

(2)

: NOT 011 =

100

1

010

(U1)

= (-5)

(10)

:

moduł 5

(10)

= 101

(2)

: NOT 101 =

010

background image

Procedura wyznaczania zapisu U1
dla liczby dziesiętnej

1.

Jeśli liczba

jest dodatnia, znajdujemy jej

reprezentację w naturalnym kodzie binarnym i
uzupełniamy bitami o wartości 0 do uzyskania
zadanej liczby bitów wymaganej przez przyjęty
format zapisu U1.

2.

Jeśli liczba jest ujemna, obliczamy jej moduł.
Moduł

przedstawiamy w naturalnym systemie

dwójkowym uzupełniając go bitami o wartości 0
do długości przyjętego formatu U1. Następnie
wszystkie bity zamieniamy na przeciwne i w
wyniku otrzymujemy zapis U1.

background image

Przykład 1

Wyznaczyć 8-mio bitowy zapis U1

liczby

dziesiętnej 76.



Liczba 76 jest dodatnia, zatem wyznaczamy jej

zapis w naturalnym systemie dwójkowym

:

76

(10)

= 1001100

(2)



Otrzymaną liczbę dwójkową uzupełniamy bitami
o wartości 0 do długości formatu otrzymując:

76

(10)

= 01001100

(U1)

background image

Przykład 2

Wyznaczyć 8-mio bitowy zapis U1

liczby

dziesiętnej (-113).



Liczba (-113) jest ujemna. Jej moduł wynosi 113.
Wyznaczamy

zapis dwójkowy modułu

:

113

(10)

= 1110001

(2)



Otrzymany zapis uzupełniamy bitami 0 do
długości 8 bitów.
Następnie negujemy wszystkie bity i otrzymujemy
w ten sposób zapis U1 liczby -113:

-113

(10)

= NOT 01110001 = 10001110

(U1)

.

background image

Zakres liczb w zapisie U1



Liczba U1 przyjmuje wartość największą dla bitu znaku
równego 0 i pozostałych bitów równych 1. Ponieważ
pozostałe bity przedstawiają w tym przypadku liczbę n-1
bitową w

naturalnym kodzie dwójkowym

, to dla n

bitowego kodu U1 otrzymujemy:

max

(U1)

= 2

n-1

- 1.



Najmniejszą wartość liczba U1 przyjmuje dla bitu
znakowego równego 1

(waga ujemna)

i pozostałych

bitów równych 0. Ponieważ w tym przypadku do wagi
bitu znakowego nic nie dodajemy, otrzymujemy:

min

(U1)

= -2

n-1

+ 1

background image

Zakres liczb w zapisie U1

Zakres n bitowej liczby w kodzie U1 wynosi

Z

(U1)

= (-2

n-1

+ 1, 2

n-1

- 1)

Zakres ten jest identyczny z

zakresem liczb w

kodzie ZM

.

background image

19

Zapis U2



Zapis U1 posiada kilka niedogodności
(arytmetyka zmieniamy wagę bitu znakowego z
(-2

n-1

+ 1)

na (-2

n-1

)

, gdzie n oznacza ilość bitów

w formacie kodu.



Wagi stają się teraz jednorodne - bit znakowy
posiada wagę ujemną, lecz o wartości
bezwzględnej takiej samej jak w

naturalnym

kodzie dwójkowym

.



Nowy kod nosi nazwę uzupełnień do podstawy 2
lub w skrócie U2

(ang. 2C - Two's Complement)

.

background image

Wartość dziesiętna liczby
w zapisie U2

Wartość liczby U2 obliczamy zgodnie z

poznanymi

zasadami

- cyfry mnożymy przez wagi pozycji,

na których się znajdują i dodajemy otrzymane
iloczyny. Waga bitu znakowego jest ujemna.

b

n-1

b

n-2

b

n-3

...b

2

b

1

b

0 (U2)

=

b

n-1

(-2

n-1

)

+ b

n-2

2

n-2

+ b

n-3

2

n-3

+

... + b

2

2

2

+ b

1

2

1

+ b

0

2

0

gdzie

b

- bit, cyfra dwójkowa 0 lub 1

n

- liczba bitów w zapisie liczby

background image

Przykład



Najstarszy bit określa znak liczby. Jeśli jest równy 0, liczba jest

dodatnia i resztę zapisu możemy potraktować jak liczbę w

naturalnym kodzie dwójkowym

.

01101011(U2) = 64 + 32 + 8 + 2 + 1 = 107(10).



Jeśli bit znaku ustawiony jest na 1, to liczba ma wartość ujemną. Bit
znaku ma wagę (-2n-1), gdzie n oznacza liczbę bitów w wybranym

formacie U2. Reszta bitów jest zwykłą liczbą w naturalnym kodzie
dwójkowym. Wagę bitu znakowego i wartość pozostałych bitów

sumujemy otrzymując wartość liczby U2:



11101011(U2) = (-27) + 64 + 32 + 8 + 2 + 1 = -128 + 107 = (-

21)(10).



Zwróć uwagę, iż postać ujemna liczby U2 nie jest już tak czytelna

dla nas jak w przypadku kodów ZM (tylko zmiana bitu znaku) i U1

(negacja wszystkich bitów).

background image

przeliczanie ujemnej liczby dziesiętnej na zapis
U2 – sposób 1



Liczba ujemna musi mieć ustawiony na 1 bit znaku. Zatem nasze

zadanie sprowadza się do znalezienia wartości pozostałych bitów.

Bit znaku stoi na pozycji o wadze (-2

n-1

)

, n - ilość bitów w formacie

U2. Pozostałe bity zapisu liczby tworzą naturalny od dwójkowy.

Wartość tego kodu musi być taka, aby po dodaniu jej do wagi
pozycji znakowej otrzymać wartość kodowanej liczby. Zapiszmy to

w formie równania:

kodowana liczba = waga bitu znakowego + wartość kodu pozostałych bitów

kodowana liczba = (-2

n-1

) + wartość kodu pozostałych bitów

stąd

wartość kodu pozostałych bitów = 2

n-1

+ kodowana liczba



Po wyznaczeniu wartości tego kodu tworzymy jego

zapis w

systemie dwójkowym

, uzupełniamy w miarę potrzeby bitem 0 do

długości formatu U2 - 1 i dodajemy bit znakowy 1. Konwersja jest

gotowa

background image

Przykład

Wyznaczyć 8-mio bitowy kod U2 dla liczby
dziesiętnej (-45)

(10)

.



Wyznaczamy moduł wagi pozycji znakowej. Dla
n = 8, 2

n-1

= 2

7

= 128



wartość kodu pozostałych bitów = 128 + (-45) = 83 =
1010011

(2)



Dodajemy bit znaku równy 1 i otrzymujemy:

(-45)

(10)

= 11010011

background image

przeliczanie ujemnej liczby dziesiętnej na zapis
U2 – sposób 2

Jeśli do liczby 2

n

(n - ilość bitów w formacie U2)

dodamy przetwarzaną liczbę dziesiętną, to w
wyniku otrzymamy wartość kodu dwójkowego
równoważnego bitowo

(tzn. o takiej samej

postaci)

kodowi U2 przetwarzanej liczby.

Wynik dodawania wystarczy

zapisać w postaci

naturalnego kodu dwójkowego

i konwersja jest

zakończona.

background image

Przykład

Wyznaczyć 8-mio bitowy kod U2

dla liczby dziesiętnej (-45)

(10)

.



2

8

+ (-45) = 256 - 45 = 211 =

11010011

(2)

.



Stąd (-45)

(10)

= 11010011

(U2)

.

background image

Zakres liczb w zapisie U2



Największa liczba U2 powstaje dla bitu znaku równego
0, a pozostałych bitów równych 1. Ponieważ pozostałe
bity przedstawiają wartość w naturalnym kodzie
binarnym i jest ich n-1, to



max

(U2)

= 2

n-1

- 1



Z kolei najmniejszą wartość liczby U2 otrzymamy dla bitu
znaku równego 1, a pozostałych bitów równych 0. W tym
przypadku wartość liczby jest równa wadze pozycji
znakowej, czyli



min

(U2)

= (-2

n-1

)

background image

Zakres liczb w zapisie U2



Zakres n bitowej liczby w kodzie U2 wynosi

Z

(U2)

= (-2

n-1

, 2

n-1

- 1)



W porównaniu z systemami

ZM

i

U1

, zakres liczb U2 jest

niesymetryczny - liczb ujemnych jest o jedną więcej niż
liczb dodatnich


Wyszukiwarka

Podobne podstrony:
02 Zapis liczb binarnych ze znakiemid 3494 ppt
Zapis liczb binarnych ze znakiem, Informatyka
Zapis liczb binarnych ze znakiem
F1 81 Zapis liczb ze znakiem
Grecy nie chcą nowych dowodów ze znakiem szatana
pdf zadania ze znakiem zapytania docx
F1 85A Nadmiar przy dodawaniu liczb ze znakiem
liczby ze znakiem
F1 81 Zapis liczb ze znakiem
Gimnazjum przekroj, 06. Liczby ze znakiem
F1 81 Zapis liczb ze znakiem
Bóg proponuje miłość ze znakiem jakości

więcej podobnych podstron