ASK_2.pdf
(
438 KB
)
Pobierz
Microsoft Word - ASK2+.doc
II.
M
ASZYNOWA REPREZENTACJA DANYCH
:
KODOWANIE ZNAKÓW
,
ZAPIS LICZB STAŁOPRZECINKOWYCH
,
ZMIENNOPRZECINKOWYCH
(
STANDARD
IEEE-754)
2.1. P
OZYCYJNE SYSTEMY LICZBOWE I KODY
System liczbowy
to zbiór reguł zapisu liczb. W
pozycyjnym systemie
liczbowym każdą liczbę całkowitą
zapisuje się jako ciąg symbolów (cyfr)
a
n
−
1
⋅
⋅
⋅
a
1
a
0
,
a
−
1
⋅
⋅
⋅
a
−
k
, a waga każdej cyfry równa się
p
a
i
, gdzie
p
– podstawa systemu liczbowego,
a
i
∈
p
{ −
,...,
1
. Wtedy dowolną dodatnią liczbę
A
p
można zapisać w
systemie pozycyjnym o podstawie
p
tak:
i
∑
−
n
1
A
=
(
a
⋅
⋅
⋅
a
a
,
a
⋅
⋅
⋅
a
)
=
a
p
n
−
1
+
...
+
a
p
1
+
a
p
0
+
a
p
−
1
+
...
+
a
p
−
k
=
a
p
i
,
p
n
−
1
1
0
−
1
−
k
p
1
n
−
442
1
443
1
0
1
−
1
42
43
−
k
i
=
−
k
cale
ulamek
Dziesiętny system
liczbowy (
p
= 10) ma alfabet ze zbioru znaków {0,1,2,3,4,5,6,7,8,9}.
23,32
10
= 2×10
1
+ 3×10
0
+ 3×10
-1
+ 2×10
-2
Dwójkowy system
liczbowy (
p
= 2) ma alfabet {0,1}.
... 2
-2
→ 0,25, 2
-1
→ 0,5,
2
0
→ 1, 2
1
→ 2, 2
2
→ 4, 2
3
→ 8, 2
4
→ 16, ... , 2
8
→ 256, 2
9
→ 512, 2
10
→ 1024, ...
10101
2
⇒ (...)
10
.
10101
2
= 1×2
4
+ 0×2
3
+ 1×2
2
+ 0×2
1
+ 1×2
0
= 16 + 4 + 1 = 21
10
Cyfry liczby dwójkowej (wartości 0 lub 1) są nazywane
bitami
(
bit
–
bi
nary digi
t
). Grupa z 8 bitów
nazywana
bajtem
(byte), a z 4 bitów –
półbajtem
(hekstet lub dekada).
Szesnastkowy system
albo heksadecymalny (
p
= 16) ma alfabet {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}.
16
0
→ 1,
16
1
→ 16, 16
2
→ 256, 16
3
→ 4096, ...
2F4
16
⇒ (...)
10
.
2F4
16
= 2×16
2
+ 15×16
1
+ 4×16
0
= 512 + 240 + 4 = 756
10
.
Dla cyfr części ułamkowej używa się ujemnych wykładników potęg podstawy
p
:
2
-1
→ ½ →0,5, 2
-2
→ ¼ →0,25, 2
-3
→ 1/8 →0,125, 2
-4
→ 1/16 →0,0625, 2
-5
→ 1/32 →0,03125.
Tab.2.1 przedstawia zapis liczb wymienionych systemów.
=
i
tab.2.1
Dziesiętny
Dwójkowy
Szesnastkowy
0
1
2
...
9
10
11
12
13
14
15
16
17
...
0
1
10
...
1001
1010
1011
1100
1101
1110
1111
10000
10001
....
0
1
2
...
9
A
B
C
D
E
F
10
11
...
Korzystne nawyki obchodzenia się z liczbami dwójkowymi:
♦
Liczba
1
00
1
42
...
00
3
2
=
2
k
; ma sens pamiętać wartości liczb dla
k
= 0 ... 10 (lub 12);
np.
1000
2
= = 8
2
3
10
,
k
zer
10000
2
= = 16
2
4
10
, 100000
2
= = 32
2
5
10
, 1000000
2
= = 64
2
6
10
, 10000000
2
= = 128
2
7
10
,
2
8
= 256
10
, = 512
2
9
10
, = 1024
2
10
10
, = 2048
2
11
10
, = 4096
2
10
, ... ;
♦
Liczba
111
jedynek
41
...
3
11
=
2
k
−
1
;
np.
11111
2
= – 1= 31
2
5
10
, 11111111
2
= – 1= 255
2
8
10
,
k
np.
101
000000
=
101
×
2
6
=
5
×
64
=
320
;
11
000011
=
11
×
2
6
+
11
⇒
3
×
64
+
3
=
192
+
3
=
195
;
1
42
3
2
10
1
42
3
2
10
6
6
♦
Dwa sposoby czytania liczb dwójkowych:
1) 1110101 = 2
7
– 1 – 1010 = 127 – 10 = 117
2) 1110101 = 111 × 2
4
+ 101 = 7 × 16 + 5 = 117.
♦
Czytanie ułamków dwójkowych:
0
00
1
...
00
1
= 2
−
k
;
0
11
...
11
= 2
1
−
−
k
2
1
(
k
−
1
zer
k
jedynek
np.
0
11001
=
25
×
2
−
5
=
25
;
1
=
1
=
0
0001
{{
...
0001
.;
1
=
1
=
0
{{
...
1111
.
2
32
15
2
4
−
1
17
2
4
+
1
4
pozycji
4
pozycji
4
zera
4
jedynki
2.2.
P
RZELICZANIE LICZB CAŁKOWITYCH BEZ ZNAKU
Konwertować liczby między systemami o różnych podstawach można różnymi sposobami. Jeden z nich
polega na dzieleniu danej liczby przez podstawę systemu do którego przetwarzamy. Wynik zapisuje się w
postaci liczby całkowitej + reszta z dzielenia, którą dalej dzielimy aż do liczby mnieszej od liczby
podstawy.
12
0000
22
10
⇒ (...)
2
.
Pokażemy dwa podejścia konwertacji:
dzielna 22 11 5 2 1
reszta
2)
22
|
2
0 1 1 0 1
0
11
|
2
LSB
1
5
|
2
LSB MSB
22
10
⇒ 10110
2
1
2
|
2
0
MSB
MSB (
Most Significat Bit
) – najbardziej znaczący bit; LSB (
Least Significat Bit
) – najmniej znaczący bit.
123
10
⇒ (...)
16
.
123 : 16 = 7 + 11(B)
123
10
⇒ 7B
16
.
W
praktyce jest potrzeba przekształcenia (konwersji) liczb z systemu binarnego na dziesiętny i odwrotnie,
aby wprowadzać do systemu cyfrowego i również wyprowadzać z niego infomację. Np. w kalkulatorach
lub w kasach sklepowych trzeba bezpośrednio wprowadzać i wyświetlać liczby w postaci dziesiętnej. Dla
tego wykorzystują
kodowanie binarne
8-4-2-1
(
BCD
–
Binary-Coded-Decimal
czyli DDK –
dwójkowo-
dziesiętny kod
). Każda cyfra dziesiętna zostaje przekształcona na dwójkowy półbajt.
756
10
⇒ (...)
BCD
756
10
⇒ 0111 0101 0110
BCD
.
W porównaniu z dwójkowym kod BCD jest nadmiarowy o 6 liczb poniewaz przekształca w system
dwójkowy każdą pozycję dziesiętną odzielnie.
Np.
dla liczby 123
10
= 1111011
2
= 0001 0010 0111
BCD
.
Potrzeba przekształcenia liczb z systemu binarnego na szesnatkowy i odwrotnie polega na tym, że w
porównaniu z BCD on nie jest nadmiarowy.
2F4
16
⇒ 0010 1111 0100
2
765
10
⇒ (...)
16
.
765 : 16 = 47 + 13 (C)
756
10
= 2FC
16
47 : 16 = 2 + 15 (F)
Odwrotne przekształcenie 2FC
16
⇒ 2×16
2
+ 15×16
1
+ 13×16
0
= 512 + 240 + 13 = 765
10
.
Szesnastkowy system
w porównaniu z dwójkowym jest bardziej czytelny, gdyż ma on o wiele mniej
miejsc pozycyjnych o takiej samej wartości liczby. Grupę 4 bitów (hekstet) traktuje się jako jedną cyfrę
szestnastkową. Np.
1101
1001
1011
,
0110
110
2
⇒
D
9
B
,
6
C
16
.
D
9
B
6
C
Wzajemne przekształcenia liczb z jednego systemu liczbowego do innego pokażemy na przykładzie.
100111
2
⇒ (...)
10
⇒ (...)
16
⇒ (...)
2
.
100111
2
= 2
5
+ 2
2
+ 2
1
+ 2
0
= 32 + 4 + 2 + 1 = 39
10
.
39
10
= 39 : 16 = 2 + 7 = 27
16
.
27
16
⇒ 0010 0111 = 100111
2
.
100111
2
⇒ 39
10
⇒ 27
16
⇒ 100111
2
1)
1
W przypadku liczb ułamkowych konwersja polega na mnożeniu jej przez podstawę
p
. Wynik mnożenia
zawiera zawsze część całkowitą mnięsza od
p
oraz jakąś część ułamkową. Z częścią ułamkową dalej
postępuje się tak, jak w kroku poprzednim. Uzyskany ciąg części całkowitych jest zapisem dwójkowym
ułamkowej części danej liczby. Przy tym należy pamiętać, że część całkowita uzyskana w pierwszym
mnożeniu odpowiada MSB, a ostatnia – LSB. Zauważmy także, że wynik jest prawie zawsze pewnym
przybliżeniem danej liczby.
0,5
10
⇒ (...)
2
⇒ (...)
10
.
0,5 × 2 =
1
,0
0,5
10
⇒ 0,1
2
⇒ 1×2
-1
= 0,5
10
0,25
10
⇒ (...)
2
⇒ (...)
10
.
0,5 × 2 =
1
,0 (LSB) 0,25
10
⇒ 0,01
2
⇒ 1×2
-2
= 0,25
10
0,35
10
⇒ (...)
2
.
0,35 × 2 =
0
,7 (MSB)
0,7 × 2 =
1
,4
0,4 × 2 =
0
,8
0,8 × 2 =
1
,6
0,6 × 2 =
1
,2 (LSB)
0,35
10
⇒ 0,01011
2
≈ 0,344
10
2.3.
R
EPREZENTACJA LICZB CAŁKOWITYCH ZE ZNAKIEM
Sposób zapisu pewnej liczby zależy od przyjętej konwencji.
Piewszy z lewej (najbardziej znaczący) bit określa znak liczby, zajmującej od bajtu do kilku słów
maszynowych. Przy tym przyjęło się, że jeśli ten bit ma wartość „0”, to pozostałe bity przedstawiają
liczbę dodatnią, a gdy – „1", to ujemną.
W systemach komputerowych, które przechowują liczby całkowite na 8 bitach (1 bajt):
Kod prosty
+1
10
⇒ 0 0000001
2
,
–1
10
⇒ 1 0000001
2
(notacja zwykła)
+127
10
⇒ 0 1111111
2
,
–127
10
⇒ 1 1111111
2
Kod odwrotny
– ” –
–1
10
⇒ 1 1111110
2
(z uzupełnieniem do 1, negowanie) – ” –
–127
10
⇒ 1 0000000
2
Kod dopełnieniowy
– ” –
–1
10
⇒ 1 1111111
2
(z uzupełnieniem do 2) – ” – –127
10
⇒ 1 0000001
2
Tabl.2.2 reprezentuje alternatywny zapis 4-bitowych liczb całkowitych.
Reprezentacja liczb w kodzie dopełnieniowym (uzupełnienia do 2) ułatwia implementację w procesorach
operacji arytmetycznych – dodawania i odejmowania.
0,25 × 2 =
0
,5 (MSB)
Tabl.2.2
Reprezentacja
dziesiętna
Reprezentacja
uzupełnienia do 1
Reprezentacja
uzupełnienia do 2
+8
-
-
+7
0111
0111
+6
0110
0110
+5
0101
0101
+4
0100
0100
+3
0011
0011
+2
0010
0010
+ 1
0001
0001
+0
0000
0000
-0
1000
-
-1
1001
1111
-2
1010
1110
-3
1011
1101
-4
1100
1100
-5
1101
1011
-6
1110
1010
-7
1111
1001
-8
-
1000
2.4.
Z
APIS LICZB STAŁOPRZECINKOWYCH I ZMIENNOPRZECINKOWYCH
Reprezentacja liczb stałoprzecinkowych (stałopozycyjnych) ułamkowych jest ocz
y
wista – położeni
e
przecinka pozycyjnego jest ustalone i znajduje się on na prawo od cyfry najmniej znaczącej. Ale
ograniczeniem takiego podejścia jest to, że nie mogą być reprezentowane ani bardzo duże liczby (jak np.
masa Słońca 2 × 10
23
g), ani bardzo małe ułamki (jak np. masa elektrona 9 × 10
-28
g). Ponadto, ułamkowe
składniki ilorazu przy dzieleniu dwóch dużych liczb mogą być utracone.
W przypadku liczb dziesiętnych obchodzi się to ograniczenie stosując notację naukową:
±
M
× 10
±
E
,
gdzie ±
M
–
mantysa
(ułamek) ze znakiem plus lub minus, ±
E
–
wykładnik
ze znakiem plus lub minus, a
podstawa 10 jest taka sama dla wszystkich liczb dziesiętnych.
Wtedy 976000000000000 = 9,76 × l0
14
, a 0,0000000000000976 = 9,76 × 10
-14
.
To samo podejście może być zastosowane do liczb binarnych.
Na rys. 2.1,
a
) jest pokazany typowy, 32-bitowy format zmiennoprzecinkowy. Lewy bit reprezentuje znak
liczby (0 - dodatnia, 1 -ujemna). Wartość
wykładnika
jest przechowywana w bitach od 1 do 8. Zastosowana tu
reprezentacja jest znana jako
reprezentacja przesunięta.
Ustalona wartość, zwana
przesunięciem
, jest
odejmowana od pola w celu otrzymania prawdziwej wartości wykładnika. W tym przypadku za pomocą
pola 8-bitowego można reprezentować liczby od 0 do 255. Po zastosowaniu przesunięcia równego 128
prawdziwe wartości wykładnika znajdują się w zakresie od -128 do +127. W tym przykładzie założyliś-
my, że podstawa jest równa 2.
Plik z chomika:
bobiszkot
Inne pliki z tego folderu:
ask_8-22.pdf
(162 KB)
ask_8-21.pdf
(162 KB)
ask_8-2.pdf
(162 KB)
ask_8-1.pdf
(279 KB)
ask_7.pdf
(223 KB)
Inne foldery tego chomika:
Dokumenty
Galeria
Playlisty
Prywatne
Zgłoś jeśli
naruszono regulamin