Kod uzupełnień do 2 (U2)

Transkrypt

Kod uzupełnień do 2 (U2)
Wprowadzenie do informatyki - ć wiczenia
Kod uzupełnień do 2 (U2)
dr inż . Izabela Szczęch
WSNHiD
Ćwiczenia z wprowadzenia do informatyki
Reprezentacja liczb całkowitych
§ Jak kodowany jest znak liczby?
§ Omó wimy dwa sposoby kodowania liczb ze znakiem:
§ kod znak-moduł(ZM),
§ kod uzupełnień do dwu (U2).
2
Izabela Szczęch
1
Wprowadzenie do informatyki - ć wiczenia
Plan zajęć
n
Kod U2 – definicja i konwersja
n
Zakresy liczb reprezentowanych w kodzie U2
n
Arytmetyka w kodzie U2
3
Kod uzupełnień do dwu definicja i konwersja
Izabela Szczęch
2
Wprowadzenie do informatyki - ć wiczenia
Kod uzupełnień do 2 (U2)
§ Motywacja
00001110 (+1410)
+ 1xxxxxxx (-1410)
00000000 (0)
00001110
+ 11110010
00000000
prowadzimy obliczenia na 88 -miu bitach,
więc pomijamy przeniesienie 1 na 99 -ty bit.
§ chcemy by najstarszy bit informowało znaku liczby
§ chcemy tak zapisać -14, aby wykonać powyż sze
dodawanie w systemie dwó jkowym bez zastanawiania się
czy któ ryś bit jest znakiem czy nie
5
Kod uzupełnień do 2 (U2)
00001110 (+1410)
+ 11110010 (-1410)
00000000 (0)
28 - 00001110
=100000000 – 00001110
=11110010
§ drugi składnik sumy jest uzupełnieniem dwó jkowym liczby
14 zapisanej na 8-miu bitach
§ Uzupełnieniem dwó jkowym (ang. 2C - Two's Complement
Complement))
liczby x zapisanej za pomocą n bitó w nazywamy liczbę
ró wną 2n – x(U2)
§ Kod U2 ułatwia realizację podstawowych operacji
arytmetycznych, gdyż nie wymaga oddzielnego
obsługiwania bitu znaku (jak to jest w przypadku kodu ZM)
6
Izabela Szczęch
3
Wprowadzenie do informatyki - ć wiczenia
Konwersja z kodu U2
na system dziesiętny
Wartość dziesiętną liczby w kodzie U2 obliczamy następująco:
§ cyfry mnoż ymy przez wagi pozycji, na któ rych się znajdują i
dodajemy otrzymane iloczyny. Waga bitu znakowego jest
ujemna i wynosi (-2n-1)..
cn-1cn-2cn-3...c2c1c0 (U2) =
cn-1(-2n-1) + cn-22n-2 + ... + c222 + c121 + c020(10
(10))
gdzie,
c - cyfra dwó jkowa 0 lub 1
n - liczba bitó w w zapisie liczby
7
Konwersja z kodu U2
na system dziesiętny
§ Jeśli bit znaku jest ró wny 0
0,, to liczba jest dodatnia i resztę
zapisu moż emy potraktować jak liczbę w naturalnym
systemie dwó jkowym, bo waga bitu znaku i tak zniknie
przy mnoż eniu przez bit znaku czyli 0.
Przykład dla zapisu 88-mio bitowego
01101011(U2)
= 0*(
0*(--27) + 1*26 + 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20
= 2 6 + 25 + 23 + 21 + 20
=64 + 32 + 8 + 2 + 1 = 107(10
(10)).
8
Izabela Szczęch
4
Wprowadzenie do informatyki - ć wiczenia
Konwersja z kodu U2
na system dziesiętny
§ Jeśli bit znaku jest ró wny 1
1,, to liczba ma wartość ujemną
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.
jkowym. Wagę bitu znakowego i wartość pozostałych
bitó w sumujemy otrzymując wartość liczby U2.
Przykład dla zapisu 88-mio bitowego
11101011(U2
(U2))
= 1*(
1*(--27) + 1*26 + 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20
=-128+64+32+8+2+1 = -128 + 107 = ((-21)(10).
9
Wyznaczanie liczby przeciwnej w U2
SPOSÓ B 1:
§ Liczbę przeciwną do x moż na wyznaczać z definicji
uzupełnienia dwó jkowego jako 2n – x(U2), gdzie n oznacza
liczbę bitó w w przyjętym formacie.
Przykład:
Rozważ my zapis na czterech bitach:
§
Niech x = 0101. Uzupełnieniem dwó jkowym jest
x(U2) = 24 - 0101 =10000 - 0101 = 1011.
§
Niech y = 1011. Uzupełnieniem dwó jkowym jest
y(U2) = 24 - 1011 = 0101.
Otrzymaliśmy zatem, ż e y(U2) = x. Ponieważ jednak y = x(U2),
więc ostatecznie moż emy zapisać , ż e (x(U2))(U2
U2)) = x.
Zatem uzupełnienie dwó jkowe danej liczby reprezentuje liczbę
do niej przeciwną.
przeciwną.
10
Izabela Szczęch
5
Wprowadzenie do informatyki - ć wiczenia
Wyznaczanie liczby przeciwnej w U2
SPOSÓ B 2:
§ Zanegować wszystkie bity zapisu liczby w U2
§ Do wyniku dodać 1
Przykład:
Znajdź liczbę przeciwna do 0101(U2).
§
Zanegować wszystkie bity: 1010
§
Dodać 1: 1010+1=1011
1010+1=1011(U2)
Sprawdzenie wyniku: 0101(U2)=4+1=5(10);
1011(U2)=-8+2+1=
8+2+1=--5(10)
11
Wyznaczanie liczby przeciwnej w U2
SPOSÓ B 3:
1. Analizę rozpoczynamy od prawej strony zapisu liczby.
2. Do wyniku przepisujemy kolejne bity o wartości 0
wraz z pierwszym napotkanym bitem o wartości 1.
3. Wszystkie pozostałe bity przepisujemy, zmieniając ich
wartość na przeciwną.
Przykład:
Znajdź liczbę przeciwna do 110011001100 (U2).
punkt 11-2:
100
punkt 3: 001100110
001100110100
100(U2)
Sprawdzenie wyniku: 110011001100 (U2)=-2048+1024+128+64+8+4=
2048+1024+128+64+8+4=--820(10);
001100110100 (U2)=512+256+32+16+4=820(10)
12
Izabela Szczęch
6
Wprowadzenie do informatyki - ć wiczenia
Zadania
Zadania:
Oblicz wartość dziesiętną następujących liczb 8
8--mio
bitowych w reprezentacji U2, a następnie znajdź do nich
liczby przeciwne (w reprezentacji U2):
a)
b)
c)
d)
10000001 (U2)
11111111(U2)
01111111(U2)
01010100 (U2)
13
Konwersja dodatnich liczb
dziesiętnych na zapis U2
§ Znajdujemy reprezentację dwó jkową danej wartości
liczbowej
§ Uzupełniamy ją z przodu bitami 0 do długości zadanego
formatu kodu U2.
Przykład:
Wyznaczyć 88-mio bitowy kod U2 dla liczby dziesiętnej 27(10).
27(10) = 16 + 8 + 2 + 1 = 11011(2) = 00011011(U2).
14
Izabela Szczęch
7
Wprowadzenie do informatyki - ć wiczenia
Konwersja ujemnych liczb
dziesiętnych na zapis U2
SPOSÓ B 1:
§ Wyznaczamy zapis dwó jkowy modułu liczby
§ Otrzymany kod dwó jkowy uzupełniamy z przodu w miarę
potrzeb zerami do rozmiaru formatu U2
§ Wyznaczamy liczbę przeciwną (w dowolny sposó b)
Przykład: Wyznaczyć 8-mio bitowy kod U2 dla liczby -45(10).
§ Wyznaczamy kod binarny modułu liczby: 45(10)=101101(2)
§ Kod uzupełniamy bitami 0 do wymaganej długości 88-miu bitó w:
00101101
§ Wyznaczamy liczbę przeciwną do 00101101(U2): 11010011(U2)
§ Stąd (-45)(10) = 11010011(U2
(U2))
15
Konwersja ujemnych liczb
dziesiętnych na zapis U2
SPOSÓ B 2:
2:
§ Jeśli do liczby 2n (n - ilość bitó w w formacie U2) dodamy
przetwarzaną liczbę dziesiętną, to zapisany dwó jkowo
wynik będzie ró wnoważ ny bitowo (tzn. o takiej samej
postaci) kodowi U2 przetwarzanej liczby.
Przykład:
ad:
Wyznaczyć 88-mio bitowy kod U2 dla liczby dziesiętnej -45(10).
28 + ((-45) = 256 - 45 = 211 = 11010011(2).
Stąd ((-45)(10) = 11010011(U2)
16
Izabela Szczęch
8
Wprowadzenie do informatyki - ć wiczenia
Zakres liczb
w kodzie U2
Zakres liczb w kodzie U2
Jaka jest najmniejsza i największa wartości liczby, któ rą da
się przedstawić w danym formacie kodu U2?
§ Liczba największa w U2 powstaje przy bicie znaku
ró wnym 0, i przy pozostałych bitach ró wnych 1.
§ Liczba najmniejsza w U2 powstaje przy bicie znaku
ró wnym 1, i przy pozostałych bitach ró wnych 0.
Zadania:
1. Wyznacz zakres liczb dziesiętnych reprezentowanych w
kodzie U2 na 4, 8 i 16 bitach.
2. Podaj ogó lny wzó r na określający zakres n-bitowych liczb
w kodzie U2.
18
Izabela Szczęch
9
Wprowadzenie do informatyki - ć wiczenia
Zakres liczb w kodzie U2
§ Zakres n-bitowej liczby w kodzie ZM określony jest
wzorem:
Z(U2) = <<-2n-1, 2n-1 - 1>
§ W poró wnaniu z kodem znakznak -moduł, kod U2 jest
niesymetryczny, bo na n-bitach moż na zapisać w nim o
jedną więcej liczbę ujemną niż liczb dodatnich.
19
Poró wnanie kodó w
Poró wnanie
interpretacji wartości
słó w kodu binarnego w
ró ż nych systemach
zapisu liczb ze znakiem
20
Izabela Szczęch
10
Wprowadzenie do informatyki - ć wiczenia
Arytmetyka
w kodzie U2
Dodawanie i odejmowanie w U2
§ Liczby U2 dodajemy i odejmujemy wg zasad dla
naturalnego systemu dwó jkowego.
§ Przeniesienia poza bit znaku ignorujemy (w rzeczywistości
takie przeniesienia czy poż yczki mogą być
wykorzystywane przez procesor do dodawania liczb o
wielokrotnej precyzji).
§ Przykłady dla 8-mio bitowego formatu U2:
-5 + 100=95
-100 - 5=-105
1 00 1 1 1 0 0
1 11 1 1 0 1 1
+
0 11 0 0 1 0 0
1 0 10 1 1 1 1 1
przeniesienie poza bit znaku
ignorujemy
Izabela Szczęch
-
0 00 0 0 1 0 1
1 00 1 0 1 1 1
22
11
Wprowadzenie do informatyki - ć wiczenia
Kod U2 – nadmiar i niedomiar
§ Ponieważ liczby zapisane w systemie U2 posiadają ustalony format
(ilość bitó w jest stała), to przy wykonywaniu operacji arytmetycznych
moż e dochodzić do nadmiaró w (wynik większy niż moż na
przedstawić za pomocą dostępnych bitó w modułu) lub niedomiaró w.
w.
§ Nadmiar (niedomiar) wystąpi, gdy w U2 suma dwó ch liczb dodatnich
(ujemnych) daje w wyniku liczbę ujemną (dodatnią).
§ Nadmiar i niedomiar nie występują przy dodawaniu liczb o
przeciwnych znakach
§ Przykłady dla 8-mio bitowego formatu U2:
100+40=nadmiar
-100 + (-40)=niedomiar
0 1 1 0 0 1 0 0
+
0 0 1 0 1 0 0 0
1 0 0 0 1 1 0 0
suma liczb dodatnich
dała liczbę ujemną
1 0 0 1 1 1 0 0
+
1 1 0 1 1 0 0 0
0 1 1 1 0 1 0 0
suma liczb ujemnych
dała liczbę dodatnią
23
Arytmetyka w kodzie U2 -zadania
Zadania:
Stosując dwó jkową reprezentację U2 na 88-miu bitach zapisz
następujące liczby całkowite i wykonaj działania:
a)
b)
c)
d)
e)
18 + 20
-30 + ((-25)
-20 + 60
120 + 32
-65 + ((-84)
24
Izabela Szczęch
12

Podobne dokumenty