Liczby ujemne i ułamki w systemie binarnym

Download Report

Transcript Liczby ujemne i ułamki w systemie binarnym

Reprezentacja liczb w systemie
binarnym
ułamki i liczby ujemne
M@rek Pudełko
Urządzenia Techniki Komputerowej
Spis treści
• System zapisu znak – moduł
• System zapisu U1
• System zapisu U2
• Ułamki w systemie binarnym
2
System zapisu znak-moduł
• W tym systemie najstarszy bit (z lewej strony)
informuje o znaku liczby.
• 0
liczba dodatnia
• 1
liczba ujemna
• Pozostałe bity mają takie samo znaczenie i
reprezentują wartość liczby.
3
System zapisu znak-moduł
• 10112 = 1110
• -1110
11011zm
• +1110
01011zm
• Liczbę w tym systemie oznaczamy sygnaturką zm
(znak-moduł) lub sm (sign – magnitude)
• Spotyka się jeszcze inny sposób zapisu przez
oddzielenie znaku od modułu wykrzyknikiem
• -1110
1!1011zm
• +1110
0!1011zm
4
Przykład zapisu systemu znak-moduł
Liczba ZM
wartość
Liczba ZM
wartość
0000
0
1000
-0
0001
1
1001
-1
0010
2
1010
-2
0011
3
1011
-3
0100
4
1100
-4
0101
5
1101
-5
0110
6
1110
-6
0111
7
1111
-7
• Dla 4 bitów najwyższy bit informuje o znaku, a pozostałe 3 to wartość liczby.
• Zwraca uwagę podwójna reprezentacja zera jako 0000 i 1000.
5
System zapisu U1 (uzupełnienie do 1)
• W tym systemie najstarszy bit (z lewej strony)
informuje o znaku liczby.
• 0
liczba dodatnia
• 1
liczba ujemna
• Liczby ujemne tworzy się negując odpowiadającą
jej liczbę dodatnią.
6
System zapisu U1
• 10112 = 1110
• +1110
01011u1
• Wartość liczby dodatniej jest analogiczna jak dla
naturalnego kodu binarnego.
• -1110
10100u1
• Liczbę ujemna uzyskujemy negując (0 → 1 i 1→0)
poszczególne cyfry liczby dodatniej.
• Liczbę w tym systemie oznaczamy sygnaturką U1
7
Liczba ujemna w systemie zapisu U1
• Chcąc uzyskać liczbę ujemną, należy najpierw
utworzyć odpowiadającą jej liczbę dodatnią.
• +1910
010011U1
• Następnie negujemy ją zmieniając 0 w 1, a 1 w 0.
• -1910
101100U1
8
Przykład zapisu systemu U1
Liczba U1
wartość
Liczba U1
wartość
0000
0
1000
-7
0001
1
1001
-6
0010
2
1010
-5
0011
3
1011
-4
0100
4
1100
-3
0101
5
1101
-2
0110
6
1110
-1
0111
7
1111
-0
• Dla 4 bitów najwyższy bit informuje o znaku, a pozostałe 3 to wartość liczby.
• Zwraca uwagę podwójna reprezentacja zera jako ciąg samych zer lub samych
jedynek.
9
System zapisu U2 (uzupełnienie do 2)
• W tym systemie najstarszy bit (z lewej strony)
informuje o znaku liczby.
• 0
liczba dodatnia
• 1
liczba ujemna
• Liczby ujemne tworzy się negując odpowiadającą
jej liczbę dodatnią i zwiększając ją o 1.
10
System zapisu U2
• 10112 = 1110
• +1110
01011U2
• Wartość liczby dodatniej jest analogiczna jak dla
naturalnego kodu binarnego.
• -1110
10101U2
• Liczbę ujemną uzyskujemy negując (0 → 1 i 1→0)
cyfry liczby dodatniej i zwiększając ją o 1.
• Liczbę w tym systemie oznaczamy sygnaturką U2
11
Liczba ujemna w systemie zapisu U2
• Chcąc uzyskać liczbę ujemną, należy najpierw
utworzyć jej dopowiadającą liczbę dodatnią.
• +1910
0100112
• Następnie negujemy ją zmieniając 0 w 1, a 1 w 0.
• -1910
101100U1
• Na końcu dodajemy do wyniku 1.
• -1910
101101U2
12
Obliczanie liczby ujemnej w systemie
zapisu U2
• Najwyższa cyfra w liczbie z systemu U2 ma znak -, a
pozostałe plus. Zamiana na system dziesiętny polega na
dodaniu pozostałych pozycji i odjęciu ich od największej
wagi.
• 101101 U2 = -19
Waga
5
4
3
2
1
0
Cyfra
1
0
1
1
0
1
Znak cyfry
-
+
-1*25
0*24
1*23
1*22
0*21
1*20
-1 * 32
0 * 16
1*8
1*4
0*2
1*1
-32 +
0+
8+
4+
0+
1
-32 +
13 =
= -19
13
Przykład zapisu systemu U2
Liczba U2
wartość
Liczba U2
wartość
0000
0
1000
-8
0001
1
1001
-7
0010
2
1010
-6
0011
3
1011
-5
0100
4
1100
-4
0101
5
1101
-3
0110
6
1110
-2
0111
7
1111
-1
• Dla 4 bitów najwyższy bit informuje o znaku, a pozostałe 3 to wartość liczby.
• Zwraca uwagę pojedyncza reprezentacja zera.
14
Zero w systemach zapisu
Liczba ZM
Zero dodatnie
Zero ujemne
Znak-moduł
0000
1000
U1
0000
1111
U2
0000
• Kody Z-M i U1 są kodami symetrycznymi. Stąd pojawiają się dwie
postacie zera. Stanowi to kłopot przy reprezentacji liczb w
informatyce.
• Zero nie jest ani dodatnie, ani ujemne. W powyższych systemach
ma ono albo obie postacie (Z-M, U1) albo jest traktowane jako
liczba dodatnia (U2).
• Kod U2 jest kodem niesymetrycznym.
15
Porównanie zapisu w systemach
Z-M, U1, U2
Liczba
+22
-22
+25
-25
System Znak-Moduł
System U1
Liczba parzysta
010110ZM 010110U1
110110ZM 101001U1
Liczba nieparzysta
011001ZM 011001U1
111001ZM 100110U1
System U2
010110U2
101010U2
011001U2
100111U2
16
•
Ćwiczenia
Przelicz następujące liczby dziesiętne na system zapisu
Znak-Moduł, U1, U2.
1. -17
11. -73
21. -31
2. -22
12. -62
22. -21
3. -32
13. -38
23. -79
4. -11
14. -91
24. -23
5. -59
15. -66
25. -14
6. -43
16. -77
26. -89
7. -94
17. -42
27. -35
8. -19
18. -39
28. -27
9. -25
19. -15
29. -36
10. -74
20. -14
30. -55 17
Zadania
1. Jaka to liczba w systemie U-1?
a) 1111u1
b) 111111u1
c) 11111111u1
2. Porównaj sposób liczby zapisane w systemie U-2?
a) -16 i +16
b) -32 i +32
c) -64 i +64
d) -128 i +128
3. s
18
Ułamki w systemie binarnym
• W systemie binarnym ułamki zapisujemy
analogicznie jak liczby rzeczywiste.
• Do przedstawienia liczb po przecinku używamy
potęg ujemnych.
19
Przeliczanie z dziesiętnego na binarny
• Ułamek dziesiętny obliczamy wg schematu:
0,62510=
Mnożna Mnożnik Wynik
0,625
Część całkowita
*2
20
Przeliczanie z dziesiętnego na binarny
• Ułamek dziesiętny obliczamy wg schematu:
0,62510=
Mnożna Mnożnik Wynik
0,625
*2
Część całkowita
1,25
21
Przeliczanie z dziesiętnego na binarny
• Ułamek dziesiętny obliczamy wg schematu:
0,62510=
Mnożna Mnożnik Wynik
Część całkowita
0,625
*2
1
0,25
*2
1,25
22
Przeliczanie z dziesiętnego na binarny
• Ułamek dziesiętny obliczamy wg schematu:
0,62510=
Mnożna Mnożnik Wynik
Część całkowita
0,625
*2
1,25
1
0,25
*2
0,5
0
0,5
23
Przeliczanie z dziesiętnego na binarny
• Ułamek dziesiętny obliczamy wg schematu:
0,62510=
Mnożna Mnożnik Wynik
Część całkowita
0,625
*2
1,25
1
0,25
*2
0,5
0
0,5
*2
1
1
0
24
Przeliczanie z dziesiętnego na binarny
• Ułamek dziesiętny obliczamy wg schematu:
0,62510=
Mnożna Mnożnik Wynik
Część całkowita
0,625
*2
1,25
1
0,25
*2
0,5
0
0,5
*2
1
1
0
0,62510=0,1012
25
Przeliczanie z dziesiętnego na binarny
• Ułamek dziesiętny obliczamy wg schematu:
0,62510=
Mnożna Mnożnik Wynik
Część całkowita
0,625
*2
1,25
1
0,25
*2
0,5
0
0,5
*2
1
1
0
0,62510=0,1012
26
Przeliczanie z binarnego na dziesiętny
• Każdy ułamek dziesiętny możemy przedstawić
jako sumę liczb binarnych o ujemnych potęgach.
• Ułamek dziesiętny z binarnego obliczamy ze
wzoru:
• n= c0*20 +c1*2-1 + c2*2-2 + ... + ci*2-i
i
n= ci*2
Wartość pozycji
27
Waga pozycji
Przeliczanie z binarnego na dziesiętny
• Jakim ułamkiem dziesiętnym jest 0,101 binarne?
0,
1
0
0
1
-1
-2
28
-3
Waga
Przeliczanie z binarnego na dziesiętny
• Jakim ułamkiem dziesiętnym jest 0,101 binarne?
0,
1
0
1
0
-1
-2
-3
Waga
0 * 20+
1 * 2-1+
0 * 2-2+
1 * 2-3+
=
29
Przeliczanie z binarnego na dziesiętny
• Zamieniamy ujemne potęgi na ułamek zwykły
0,
1
0
1
0
-1
-2
-3
Waga
0 * 20+
0 * 0+
1 * 2-1+
1 * 1/21+
0 * 2-2+
0 * 1/22+
1 * 2-3+
1 * 1/23+
=
=
30
Przeliczanie z binarnego na dziesiętny
• Wyliczamy ułamki
0,
1
0
1
0
-1
-2
-3
Waga
0 * 20+
0 * 0+
0 * 0+
1 * 2-1+
1 * 1/21+
1 * 1/2+
0 * 2-2+
0 * 1/22+
0 * 1/4+
1 * 2-3+
1 * 1/23+
1 * 1/8+
=
=
=
31
Przeliczanie z binarnego na dziesiętny
• Zamieniamy ułamki zwykłe na dziesiętne
0,
1
0
0
-1
0 * 20+
0 * 0+
0 * 0+
1 * 2-1+
1 * 1/21+
1 * 0,5+
1
-2
-3
Waga
0 * 2-2+
1 * 2-3+
0 * 1/22+ 1 * 1/23+
0 * 0,25+ 1 * 0,125+
=
=
=
32
Przeliczanie z binarnego na dziesiętny
• Zamieniamy ułamki zwykłe na dziesiętne
0,
1
0
1
0
-1
-2
0 * 20+
0 * 0+
0+
1 * 2-1+
1 * 1/21+
0,5+
0 * 2-2+
0 * 1/22+
0+
0,1012=0,62510
33
-3
Waga
1 * 2-3+ =
1 * 1/23+ =
0,125 =0,625
Co to za ułamek dziesiętny?
• 0,11012
• 0,100112
34
Co to za ułamek dziesiętny?
• 0,11012 = 0,8125
• 0,100112= 0,59375
35
Zamień na ułamek binarny
•
•
•
•
0,375
0,5125
0,6
0,15
36
Zamień na ułamek binarny
•
•
•
•
0,375 = 0,0112
0,5125 = 0, 1000 (0011) 2
0,6
= 0, (1001) 2
0,15 = 0, 00 (1001) 2
37