Liczby w Komputerze
Zajęcia 3
Liczby naturalne – postać binarna liczby
Każdą liczbę naturalną x
z przedziału
[0,2
n
-1]
zapisaną w systemie dziesiętnym możemy
zapisać na
n-bitach
w systemie dwójkowym.
Dla przykładu, każdą liczbę naturalną
x
z przedziału
[0,2
8
-1]=[0,255]
zapisaną w
systemie dziesiętnym możemy zapisać na
8-bitach
w systemie dwójkowym.
Np.
0
10
= 0000 0000
2
17
10
= 0001 0001
2
123
10
= 0111 1011
2
255
10
= 1111 1111
2
Zadanie 1
Ile potrzeba najmniej bitów do zapisania liczby 1232
10
?
Zadanie2
Jaką największą liczbę dziesiętną możemy zapisać używając 16 bitów?
Zadanie 3
11001100
2
= …
10
?
Arytmetyka binarna
Liczby całkowite – system Znak-Moduł (ZM)
Liczbę całkowitą x zapisaną w systemie
Znak-Moduł
interpretujemy następująco:
1. Najstarszy bit (liczony od lewej) przeznaczamy na znak liczby, przy czym, jeśli jest to
0
,
to mamy do czynienia z liczbą
dodatnią
, a jeśli
1
, to z liczbą
ujemną
.
2. Pozostałe bity przeznaczamy na moduł (wartość bezwzględną) liczby.
Wówczas na
n-bitach
możemy zapisać
2
n
-1
liczb z przedziału
[-2
n-1
+1,2
n-1
-1]
.
A zatem na
8-bitach
możemy zapisać każdą liczbę całkowitą z przedziału
[-2
8-1
+1,2
8-1
-1]=[-127,127]
.
Np.
1
0001001
ZM
=
-
(0*2
6
+0*2
5
+0*2
4
+1*2
3
+0*2
2
+0*2
1
+1*2
0
)
10
=
-
9
10
Z
M
0
1001001
ZM
=
+
(1*2
6
+0*2
5
+0*2
4
+1*2
3
+0*2
2
+0*2
1
+1*2
0
)
10
=
+
73
10
Z
M
Zadanie 1
Stosując dwójkową reprezentację Znak-Moduł, zapisać dziesiętne liczby całkowite na 8-
bitach lub jeśli to konieczne ich wielokrotności: +20
10
, -20
10
, -128
10
, -372
10
, 244
10
.
Zadanie 2
Rozkoduj liczby: 10111000
ZM
, 10101010
ZM
, 01110011
ZM
.
Liczby całkowite – System Uzupełnień do 2 (U2)
Liczbę całkowitą x zapisaną w systemie
U2
interpretujemy następująco:
1. Najstarszy bit (czyli od lewej) ma wagę
-2
n-1
. Wówczas łatwo zauważyć, że jeśli wynosi
on
0
, to mamy do czynienia z liczbą
dodatnią
, a jeśli
1
, to z liczbą
ujemną
.
2. Pozostałe bity przeznaczamy na moduł (wartość bezwzględną) liczby.
Wówczas na
n-bitach
możemy zapisać
2
n
liczb z przedziału
[-2
n-1
,2
n-1
-1]
.
A zatem na
8-bitach
możemy zapisać każdą liczbę całkowitą z przedziału
[-2
8-1
,2
8-1
-1]=[-128,127]
.
Np.
1
1001001
U2
=
1*(-2
7
)
+1*2
6
+0*2
5
+0*2
4
+1*2
3
+0*2
2
+0*2
1
+1*2
0
10
= -55
10
0
1001001
U2
=
0*(-2
7
)
+1*2
6
+0*2
5
+0*2
4
+1*2
3
+0*2
2
+0*2
1
+1*2
0
10
=
+73
10
Sposób na zamianę liczby z systemu dziesiętnego na U2:
1. Jeśli liczba
x
jest dodatnia, to zamień ją na postać ZM i koniec.
2. Jeśli liczba
x
jest ujemna, to weź jej wartość bezwzględną i zamień ją na postać ZM.
Następnie zbuduj liczbę według schematu: przepisuj od prawej wszystkie zera i pierwszą
napotkaną jedynkę. Następnie przepisuj kolejne cyfry zamieniając każdą na przeciwną, tj.
jedynkę na zero, a zero na jedynkę. Jeśli liczba przekracza długością zadaną liczbę bitów
na których powinna się zmieścić, to wykreśl najstarszy bit (czyli od lewej).
3. Otrzymana liczba, to szukana postać w systemie U2 liczby
x
.
Zadanie 1
Stosując dwójkową reprezentację U2, zapisać dziesiętne liczby całkowite na 8-bitach lub
jeśli to konieczne ich wielokrotności: +20
10
, -20
10
, -128
10
, -372
10
, 244
10
.
Zadanie 2
Rozkoduj liczby: 10111000
U2
, 10101010
U2
, 01110011
U2
.
Liczby rzeczywista – Postać Stałoprzecinkowa
(PS)
Liczba rzeczywista x
w systemie stałopozycyjnym ma postać:
x =
Znak
CzęśćCałkowita
,
CzęśćUłamkowa
Np.
+
123
,
125
I po zamianie binarnej:
+
1111011
,
001
Zadanie 1
Podane liczby dziesiętne zapisać w systemie stałoprzecinkowym w formacie: 0-4 bity na
część ułamkową, 5-14 bity na część całkowitą, 15 bit na znak: +0,03125, 13,75, -0,875,
-19,25.
Zadanie 2
Rozkoduj liczby zapisane w systemie stałoprzecinkowym w formacie: 0-4 bity na część
ułamkową, 5-14 bity na część całkowitą, 15 bit na znak: 0000010110011000,
1001000101101100, 0000000101101001.
Liczby rzeczywiste – Postać
Zmiennoprzecinkowa (PZ)
Liczba rzeczywista x
w systemie zmiennopozycyjnym ma postać:
x =
Znak
Wykładnik
Mantysa
a dokładniej:
x=
Z
*
M
*P
W
gdzie P - to podstawa systemu w którym jest zapis liczby.
Np.
Powiedzmy, że liczbę rzeczywistą x zapisujemy na 8 bitach, przy czym:
•
1 bit
na
znak
•
3 bity
na
wykładnik
•
4 bity
na
mantysę
.
Weźmy liczbę x=-60,345433. Przesuwamy najpierw przecinek: x=-
6,0345433.
Mamy teraz:
x=
-
6034
10
-2
Zadanie
Zakoduj liczby:
x=-123.34
oraz
x=34.675
na 8 bitach z przydziałem na Mantysę i
Wykładnik tak jak powyżej.
Praca domowa
Dokończ wszystkie nierozwiązane zadania.