Kodowanie U2 (liczby całkowite)

Transkrypt

Kodowanie U2 (liczby całkowite)
Temat: Kodowanie
informacji
za pomocą bitów
(liczby ujemne
całkowite)
Wiemy jak przedstawić
liczbę w naturalnym
kodzie binarnym (NKB).
Ale możemy tak
zakodować tylko liczbę
naturalną.
Jak zakodować
za pomocą bitów liczbę
ujemną (całkowitą)?
Nie możemy w tym celu
używać innych symboli
niż 0 i 1.
Najpopularniejszym
kodem używanym
w tym celu jest kod U2
(uzupełnień do dwóch)
W kodzie U2 liczba
na pierwszym bicie
(z lewej) może mieć:
- jedynkę (ujemna),
- lub zero (dodatnia).
Liczba dodatnia
0 1 0 1 0 1 1 1
Liczba ujemna
1 1 0 1 0 1 1 1
Liczba dodatnia
0 1 0 1 0 1 1 1
= 87(U2)
W tym przypadku wartość
liczby jest taka sama jak
w NKB.
Liczba ujemna
1 1 0 1 0 1 1 1
= ....(U2)
Jaką wartość będzie miała
liczba gdy zamiast zera
na pierwszej pozycji wpiszemy
jedynkę? Na pewno ujemną,
ale nie będzie to -87.
Liczba ujemna
1 1 0 1 0 1 1 1
7
6
5
4
3
2
1
2 2 2 2 2 2 2 2
0
= ....(U2)
Liczba ujemna w kodzie U2
1 1 0 1 0 1 1 1
7
6
5
4
3
2
= -41(U2)
-2 +2 +2 +2 +2 +2 +2 +2
1
0
1·(-2 ) + 1·2 + 0·2 + 1·2 + 0·2
2
1
0
+ 1·2 + 1·2 + 1·2 =
= -128+64+16+4+2+1 = -41
7
6
5
4
3
Liczba dodatnia w kodzie U2
0 1 0 1 0 1 1 1
7
6
5
4
3
2
= 87(U2)
-2 +2 +2 +2 +2 +2 +2 +2
1
0
0·(-2 ) + 1·2 + 0·2 + 1·2 + 0·2
2
1
0
+ 1·2 + 1·2 + 1·2 =
= 64+16+4+2+1 = 87
7
6
5
4
3
Zad. Zamień
na wartość
dziesiętną liczbę
w kodzie U2
zapisaną
na jednym bajcie.
Zad. Liczbę w kodzie
U2 zapisano
na jednym bajcie.
Jaką maksymalną
wartość może ona
przyjąć?
Maksymalna wartość w kodzie U2
(na jednym bajcie)
0 1 1 1 1 1 1 1
7
6
5
4
3
2
= 127(U2)
-2 +2 +2 +2 +2 +2 +2 +2
1
0
0·(-2 ) + 1·2 + 1·2 + 1·2 + 1·2
2
1
0
+ 1·2 + 1·2 + 1·2 =
= 64+32+16+8+4+2+1=127
7
6
5
4
3
Zad. Liczbę w kodzie
U2 zapisano
na jednym bajcie.
Jaką minimalną
wartość może ona
przyjąć?
Minimalna wartość w kodzie U2
(na jednym bajcie)
1 0 0 0 0 0 0 0
7
6
5
4
3
2
= -128(U2)
-2 +2 +2 +2 +2 +2 +2 +2
1
0
1·(-2 ) + 0·2 + 0·2 + 0·2 + 0·2
2
1
0
+ 0·2 + 0·2 + 0·2 = -128
7
6
5
4
3
1 0 0 0 0 0 0 0 = -128(U2)
0 1 1 1 1 1 1 1 = 127(U2)
Przedział -128...127
8
zawiera 2 =256
różnych wartości
Zad. Liczbę w kodzie
U2 zapisano
na dwóch bajtach.
Jaką maksymalną
wartość może ona
przyjąć?
Maksymalna wartość w kodzie U2
(na dwóch bajtach)
16 bitów
0 1 ... ... ... ... ... 1
-2
15
+2
14
+2
0
0111111111111111(U2)=32767
Zad. Liczbę w kodzie
U2 zapisano
na dwóch bajtach.
Jaką minimalną
wartość może ona
przyjąć?
Minimalna wartość w kodzie U2
(na dwóch bajtach)
16 bitów
1 0 ... ... ... ... ... 0
-2
15
+2
14
+2
0
1000000000000000(U2)=-32768
Na dwóch bajtach
(16 bitach) w kodzie
U2 możemy zapisać
wartości z przedziału
-32768 ... 32767
Na dwóch bajtach
(16 bitach) w kodzie
U2 możemy zapisać
wartości z przedziału
15
15
-2 ... 2 -1
Na n bitach w kodzie
U2 możemy zapisać
wartości z przedziału
n-1
n-1
-2 ... 2 -1
Zad. Liczbę w kodzie
U2 zapisano
na czterech bajtach.
Jaką maksymalną
i minimalną wartość
może ona przyjąć?
Zad. Zamień
na wartość
dziesiętną liczbę
w kodzie U2
zapisaną na dwóch
bajtach.
Uwaga! W kodzie U2
kluczową informacją
jest liczba bitów,
na których zapisana
jest wartość.
Jak zamienić liczbę
z systemu
dziesiętnego
na zakodowaną
w U2?
(pierwszy sposób)
Dla liczby dodatniej
postępujemy
analogicznie jak
w kodzie NKB.
Uważamy tylko na to,
aby nie przekroczyć
wartości maksymalnej.
Dla liczby ujemnej
n
liczymy wartość: 2 -|x|, gdzie
n – liczba bitów,
x – liczba ujemna
do przekształcenia.
Potem postępujemy
analogicznie jak w kodzie
NKB.
n
2 -|x|, dla x<0
xU2 =
x, dla x≥0
n – liczba bitów,
Dalej kodujemy
tak jak w NKB
Jak zamienić liczbę
z systemu
dziesiętnego
na zakodowaną
w U2?
(drugi sposób)
Przykład:
-41 = ......................(U2)
Liczbę bez znaku minus zamieniamy
zgodnie z kodowaniem NKB
0 0 1 0 1 0 0 1
7
6
5
4
3
2
= 41(NKB)
+2 +2 +2 +2 +2 +2 +2 +2
1
0
0·2 + 0·2 + 1·2 + 0·2 + 1·2
2
1
0
+ 0·2 + 0·2 + 1·2 =
= 32+8+1= 41
7
6
5
4
3
Dokonujemy negacji bitów
(zamieniamy bity 0 na 1, 1 na 0)
0 0 1 0 1 0 0 1
7
6
5
4
3
2
+2 +2 +2 +2 +2 +2 +2 +2
1
0
1 1 0 1 0 1 1 0
7
6
5
4
3
2
+2 +2 +2 +2 +2 +2 +2 +2
1
0
Do otrzymanej wartości dodajemy 1
1 1 0 1 0 1 1 0
7
6
5
4
3
2
+2 +2 +2 +2 +2 +2 +2 +2
1
1 1 0 1 0 1 1 1
7
6
5
4
3
2
= -41(U2)
-2 +2 +2 +2 +2 +2 +2 +2
1
0
0
Jak komputer dodaje
i odejmuje liczby
w kodzie U2?
1 1 1 1 1 1
1
0 1 1 1 1 1 0 1
+1 1 1 0 0 1 0 1
0 1 1 0 0 0 1 0
= 125(U2)
= -27(U2)
= 98(U2)
Więcej informacji:
Podręcznik: strona 18-21

Podobne dokumenty