Upload
dangthuy
View
226
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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