9
51 3.3. Zapis liczb binarnych ze znakiem 1 0 1 1 0 0 1 1 -1 0 1 1 1 0 1 : 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 reszta 0 0 0 0 0 0 0 1 3.3. Zapis liczb binarnych ze znakiem W systemie dziesiętnym liczby ujemne opatrzone są specjalnym znakiem graficznym, tzw. minusem „–”, na przykład –6, –22 itd., a liczby dodatnie w niektórych przypad- kach plusem „+”, na przykład +5, +20. W systemie binarnym opartym wyłącznie na zerach i jedynkach brakuje dodatkowego znaku, który wskazywałby na ujemny lub dodatni charakter określonej liczby. Opracowano kilka metod zapisu liczb binarnych ze znakiem, które charakteryzują się różnym stopniem przydatności, między innymi: metodę znak-moduł (ZM), q metodę uzupełnień do 1 (U1), q metodę uzupełnień do 2 (U2). q 3.3.1. Metoda znak-moduł (ZM) W metodzie znak-moduł zastosowano prosty zabieg kodowania znaku za pomocą najstarszej cyfry w liczbie binarnej. Najstarszą cyfrę określa się jako znak, pozostałe cyfry są modułem reprezentującym daną liczbę binarną: znak moduł a n–1 a n–2 a 1 a 0

3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

Embed Size (px)

Citation preview

Page 1: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

51

3.3. Zapis liczb binarnych ze znakiem

1 0 1 1 0 0

1 1-1 0 1 1 1 0 1 : 1 0 1

– 1 0 1

0 0 1 1 1 1 0 1

– 1 0 1

0 1 1 1 1 0 1

– 1 0 1

0 1 0 1 0 1

– 1 0 1

0 0 0 0 1

– 1 0 1

0 0 0 1

– 1 0 1

reszta 0 0 0 0 0 0 0 1

3.3. Zapis liczb binarnych ze znakiemW systemie dziesiętnym liczby ujemne opatrzone są specjalnym znakiem graficznym, tzw. minusem „–”, na przykład –6, –22 itd., a liczby dodatnie w niektórych przypad-kach plusem „+”, na przykład +5, +20. W systemie binarnym opartym wyłącznie na zerach i jedynkach brakuje dodatkowego znaku, który wskazywałby na ujemny lub dodatni charakter określonej liczby.

Opracowano kilka metod zapisu liczb binarnych ze znakiem, które charakteryzują się różnym stopniem przydatności, między innymi:

metodę znak-moduł (ZM), q

metodę uzupełnień do 1 (U1), q

metodę uzupełnień do 2 (U2). q

3.3.1. Metoda znak-moduł (ZM)W metodzie znak-moduł zastosowano prosty zabieg kodowania znaku za pomocą najstarszej cyfry w liczbie binarnej. Najstarszą cyfrę określa się jako znak, pozostałe cyfry są modułem reprezentującym daną liczbę binarną:

znak moduł

an–1 an–2 … a1 a0

urzadzenia_techniki_komputerowej.indb 51 2010-06-01 11:02:28

Page 2: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

ROZDZIAł 3 t Arytmetyka liczb binarnych

52

W celu obliczenia wartości naturalnej liczby binarnej ze znakiem należy posłużyć się następującym wzorem:

Stosując powyższy (zmodyfikowany) zapis wielomianowy, możemy zauważyć, że znak otrzymanej po obliczeniu liczby zależny jest od wyrażenia: 1–2*najstarsza cyfra liczby. Jeżeli najstarsza cyfra jest jedynką, to wynikiem wyrażenia będzie „–1”; jeżeli zerem, to otrzymamy „1”. Obliczony moduł należy przemnożyć przez wyrażenie znakowe, dzięki czemu otrzyma się dodatnią lub ujemną liczbę dziesiętną będącą odpowiedni-kiem danej liczby binarnej.

Aby uzyskać liczbę binarną ze znakiem na podstawie liczby dziesiętnej, należy obli-czyć moduł metodą dzielenia przez podstawę (2), a następnie dołączyć „0”, jeżeli chce się mieć liczbę dodatnią, lub 1 — dla liczby ujemnej.

Przykłady:0111(Z-M) = 0 12 11 10 = (1–2*0)*(1*22+1*21+1*20) = 1*(4+2+1) = 7D

1111(Z-M) = 1 12 11 10 = (1–2*1)*(1*22+1*21+1*20) = –1*(4+2+1) = –7D

Jedną z wad metody ZM jest brak możliwości prostego wykonywania operacji arytme-tycznych, co znacznie ogranicza jej powszechne stosowanie:

1 1 1 0ZM –6D

+ 0 1 1 0ZM + 6D

1 0 1 0 0 20D

Kolejną niedogodnością związaną z systemem znak-moduł jest to, że zero może zostać zapisane na dwa sposoby: ze znakami plus i minus. Stanowi to przykład nieefektyw-ności tej metody, w której tracony jest jeden wyraz kodowy.

3.3.2. Metoda uzupełnień do 2 (U2)Niedoskonałości systemu ZM spowodowały, że konieczne było opracowanie bardziej naturalnej metody zapisu liczb binarnych ze znakiem. Powstała metoda uzupełnień do 2 (U2), gdzie cyfra określająca znak jest zintegrowana z liczba binarną, co pozwala na wykonywanie obliczeń arytmetycznych.

W celu obliczenia wartości liczby binarnej z wykorzystaniem metody U2 należy za-stosować poniższy wzór:

urzadzenia_techniki_komputerowej.indb 52 2010-06-01 11:02:28

Page 3: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

53

3.3. Zapis liczb binarnych ze znakiem

W metodzie U2 wyrażenie znaku jest tak skonstruowane, że uczestniczy w wartości liczby jak pozostałe pozycje. Wartość podstawy w wadze najstarszej liczby określającej znak jest ujemna.

Przykłady:0111B = 03 12 11 10 = 0*(–23)+1*(22)+1*(21)+1*(20) = 4+2+1 = 7B

1111B = 13 12 11 10 = 1*(–23)+1*(22)+1*(21)+1*(20) = –8+4+2+1 = –1B

Jak widać w przykładach, liczby binarne dodatnie i ujemne U2 wyglądają po prze-kształceniu na dziesiętne inaczej niż w przypadku metody ZM.

Przekształcenie ujemnej liczby dziesiętnej na postać binarną jest bardziej pracochłon-ne niż w metodzie ZM.

Na początku obliczamy postać binarną z wartości bezwzględnej dziesiętnej liczby 1. ujemnej:

5:2 = 2 r = 12:2 = 1 r = 01:2 = 0 r = 1

–5D = |–5D| = 5D = 101B

Powstałą liczbę binarną należy uzupełnić zerami do liczby cyfr będących krotno-2. ścią dwójki. W tym przypadku, gdy liczba binarna ma 3 cyfry, dopełniamy do 4. Jeżeli byłoby 5 cyfr, należałoby uzupełnić do ośmiu itd.

0101B

Następnie należy zamienić wszystkie cyfry w liczbie binarnej na przeciwne, czyli 3. jedynki na zera i odwrotnie:

1010

W ostatnim etapie do powstałej liczby dodaje się binarną jedynkę — wynik jest 4. ujemną liczbą binarną:

1 0 1 0

+ 0 0 0 1

1 0 1 1

13 02 11 10 = 1(–23)+0(22)+1(21)+1(20) = –8+3 = –5

urzadzenia_techniki_komputerowej.indb 53 2010-06-01 11:02:29

Page 4: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

ROZDZIAł 3 t Arytmetyka liczb binarnych

54

3.4. Liczby binarne stało- i zmiennoprzecinkowePodobnie jak w systemie dziesiętnym liczby binarne również mogą być zapisane w po-staci ułamkowej. Zapis binarnych liczb pozycyjnych z przecinkiem może przyjąć po-stać stało- lub zmiennoprzecinkową.

3.4.1. Liczby stałoprzecinkowe (stałopozycyjne)Liczby stałoprzecinkowe (ang. fixed-point numbers) umożliwiają zapis liczb w posta-ci ułamkowej, w którym pozycja przecinka ustalana jest arbitralnie w zależności od wymaganej dokładności.

Binarną liczbę stałoprzecinkową można potraktować jako złożenie dwóch części — liczby całkowitej oraz ułamkowej rozdzielonych przecinkami:

część całkowita część ułamkowa

10110011, 0101

W celu przekształcenia binarnej liczby stałoprzecinkowej na postać dziesiętną należy posłużyć się poniższym wzorem:

an-1 … a1 a0 , a-1 … a-m = an-1*2n-1+…+a1*21+a0*20+a-1*2-1+…+a-m*2-m

Wartości wag części ułamkowej przyjmują postać ułamków, gdzie dokładność okre-ślona jest przez wagę najmłodszej cyfry.

Przykłady:1101,11B = 13 12 01 10, 1-1 1-2 = 1*23+1*22+0*21+1*20+1*2-1+1*2-2 = 8+4+1+½+¼ = 13,75D

11100101,1011 = 27+26+25+22+20+2-1+2-3+2-4 = 128+64+32+4+1+½+1/8+1/16 = 229,6875D

Zamianę liczby dziesiętnej na postać binarną przeprowadza się w dwóch etapach:

zamiana liczby całkowitej na postać binarną za pomocą cyklicznego dzielenia qprzez 2; zamiana części ułamkowej na postać binarną za pomocą cyklicznego mnożenia qprzez 2. Jeżeli wynik jest ≥ 1, to wyznaczony bit części ułamkowej jest także rów-ny 1. Do dalszych obliczeń wykorzystuje się część ułamkową wyniku.

Proces należy wykonywać aż do otrzymania 0. Z wyników iloczynów pobiera się war-tości całkowite — ułamek liczby binarnej. Otrzymane liczby łączymy, przedzielając część całkowitą i ułamkową przecinkiem. Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy przyjąć przybliżoną dokładność, na przykład do 10 miejsc po przecinku.

urzadzenia_techniki_komputerowej.indb 54 2010-06-01 11:02:29

Page 5: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

55

3.4. Liczby binarne stało- i zmiennoprzecinkowe

Przykład:

10,225 10 , 225

10:2 = 5 r = 05:2 = 2 r = 12:2 = 1 r = 01:2 = 0 r = 1

10D = 1010B

1. 0,225*2 = 0,45 część całkowita 02. 0,45*2 = 0,9 część całkowita 03. 0,9*2 = 1,8 część całkowita 14. 0,8*2 = 1,6 część całkowita 15. 0,6*2 = 1,2 część całkowita 16. 0,2*2 = 0,4 część całkowita 07. 0,4*2 = 0,8 część całkowita 08. 0,8*2 = 1,6 część całkowita 19. 0,6*2 = 1,2 część całkowita 110. 0,2*2 = 0,4 część całkowita 0

0,225D = 0,0011100110B

10,225D = 1010,0011100110B

3.4.2. Liczby zmiennoprzecinkowe (zmiennopozycyjne)W odróżnieniu od liczb stałoprzecinkowych liczby zmiennoprzecinkowe (ang. flo-ating-point numbers — FP) umożliwiają obsługę większego zakresu liczb (bardzo ma-łych lub bardzo dużych), jednak kosztem wolniejszego przetwarzania i mniejszej do-kładności. Termin „zmiennoprzecinkowe” oznacza, że nie istnieje stała liczba cyfr przed przecinkiem i po nim.

Komputery przetwarzają najczęściej liczby zmiennoprzecinkowe w przybliżeniu. Nie-uwaga programisty podczas operowania na liczbach zmiennoprzecinkowych może prowadzić do przekłamań w otrzymanych wynikach.

UWAGA

urzadzenia_techniki_komputerowej.indb 55 2010-06-01 11:02:29

Page 6: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

ROZDZIAł 3 t Arytmetyka liczb binarnych

56

Liczba zmiennoprzecinkowa składa się z dwóch części: liczby stałoprzecinkowej (ang. mantissa — mantysa, m) oraz podstawy (p) podniesionej do potęgi, zwanej cechą lub wykładnikiem (ang. exponent, e):

lFP = m*be

W celu zamiany zmiennoprzecinkowej liczby binarnej na postać dziesiętną należy ze słowa kodu wydobyć cyfry cechy i mantysy (na przykład 1101 1010 — 4 cyfry cechy i 4 mantysy):

cecha mantysa

b7 b6 b5 b4 b3 b2 b1 b0

Za pomocą metody uzupełnień do 2 oblicza się wartość cechy:

e = b7(–23)+b622+b52

1+b420 = (–8)b7+4b6+2b5+b4

Mantysa jest najczęściej liczbą stałoprzecinkową z przedziału [1, 2). Oblicza się ją na podstawie wzoru:

m = b3b2, b1b0 = b3(–21)+b220+b12-1+b02-2 = –2b3+b2+½b1+¼b2

Otrzymaną cechę i mantysę podstawia się do wzoru:

lFP = m*2e

Przykłady:

1111 1001FP

e = 1111U2 1111U2 = –8+4+2+1 = –1D

m = 10,01U2 10,01U2 = –2+¼ = –1,75D

lFP = m*2e = –1¾*2-1 = –7/4*½ = –0,875

11111001FP = –0,875D

0001 0100FP

e = 0001U2 0001U2 = 1D

m = 01,00U2 01,00U2 = 1D

lFP = m*2e = 1*21 = 1*2 = 2

00010100FP = 2D

Zamianę liczby dziesiętnej na postać binarną można wykonać, stosując metodę dla liczb stałoprzecinkowych.

urzadzenia_techniki_komputerowej.indb 56 2010-06-01 11:02:29

Page 7: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

57

3.4. Liczby binarne stało- i zmiennoprzecinkowe

Przykład:

13,7D

13:2 = 6 r = 16:2 = 3 r = 03:2 = 1 r = 11:2 = 0 r = 1

13D = 1101B

0,7*2 = 1,4 część całkowita 10,4*2 = 0,8 część całkowita 00,8*2 = 1,6 część całkowita 10,6*2 = 1,2 część całkowita 1

13,7D = 1101,1011B

Dokonaj konwersji liczb binarnych do postaci dziesiętnej z wykorzysta-1. niem zapisu wielomianowego:a. 11011011B

b. 10010011B

W celu sprawdzenia wyników pierwszego ćwiczenia liczby dziesiętne prze-2. kształć na liczby binarne za pomocą cyklicznego dzielenia przez podstawę. Dokonaj konwersji liczb szesnastkowych do postaci dziesiętnej z wykorzy-3. staniem zapisu wielomianowego:a. F3AH

b. 952H

W celu sprawdzenia wyników z pierwszego ćwiczenia liczby dziesiętne 4. przekształć na liczby binarne za pomocą cyklicznego dzielenia przez podstawę. Dokonaj konwersji liczby binarnej 10110110115. B do postaci szesnastkowej z wykorzystaniem zapisu wielomianowego.

ĆWICZENIA

urzadzenia_techniki_komputerowej.indb 57 2010-06-01 11:02:29

Page 8: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

ROZDZIAł 3 t Arytmetyka liczb binarnych

58

Wykonaj działania arytmetyczne na liczbach binarnych:6. a.

1 1 0 1

+ 1 0 1 1

? ? ? ?

b.

1 1 0 0

– 1 0 1 1

? ? ? ?

c.

1 1 0 1

× 1 0 1 0

? ? ? ?

d.

? ? ?

1 0 1 1 : 1 0

Przekształć liczby binarne ze znakiem do postaci dziesiętnej za pomocą 7. kodu U2:a. 0101B

b. 1101B

Przekształć dziesiętną liczbę –78. D do postaci binarnej. Przekształć binarną liczbę stałoprzecinkową 1001,119. B do postaci dziesiętnej. Przekształć ułamkową liczbę dziesiętną 17,610. D do postaci binarnej.

ĆWICZENIA ciąg dalszy

urzadzenia_techniki_komputerowej.indb 58 2010-06-01 11:02:29

Page 9: 3.3. Zapis liczb binarnych ze znakiem - Helion Edukacja URTEKO 3... · Jeżeli mnożenie przez 2 prowadzi do osią-gnięcia nieskończenie długiej kombinacji zer i jedynek, należy

59

3.4. Liczby binarne stało- i zmiennoprzecinkowe

Wymień pozycyjne systemy liczbowe.1. Opisz sposoby konwersji liczb heksadecymalnych na binarne i binarnych na 2. heksadecymalne. Co to jest tabliczka dodawania i odejmowania liczb binarnych?3. Jakie niedoskonałości skrywa metoda znak-moduł?4. Jakie niebezpieczeństwo pojawia się przy zaokrąglaniu binarnych liczb 5. zmiennoprzecinkowych?

PytANIA I PolECENIA KoNtrolNE

urzadzenia_techniki_komputerowej.indb 59 2010-06-01 11:02:29