Informatyka I Język ANSI C
description
Transcript of Informatyka I Język ANSI C
Wykład 2 1
Informatyka IJęzyk ANSI C
Kody pozycyjne
Wykład 2 2
Liczby całkowiteInterpretacja notacji
(xnxn-1xn-2....x1x0)p=
= xn•pn + xn-1•pn-1 + xn-2•pn-2 + ... x1•p + x0
Przykład:
15210 = 1•100 + 5•10 +2•1 = 152
1528 = 1•64 + 5•8 + 2 = 106
15216 = 1•256 + 5•16 + 2 = 338
1522 = ERROR!!
Wykład 2 3
Więcej przykładówDziesiętny
(decymalny)
Dwójkowy(binarny)
Heksadecy-malny
Ósemkowy(oktalny)
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
8 1000 8 10
9 1001 9 11
10 1010 A 12
11 1011 B 13
15 1111 F 17
16 10000 10 20
163 10100011 A3 243
Wykład 2 4
Procedury zamiany kodów• Przejście z kodu dwójkowego na heksadecymalny
Grupujemy od końca zera i jedynki w paczki po cztery i wyzna-czamy wartość każdej paczki jako jedną pozycję zapisu
• Przejście z kodu heksadecymalnego na dwójkowy
Każdą cyfrę z zapisu szesnastkowego zamieniamy na liczbę za-pisaną w kodzie dwójkowym na czterech pozycjach
• Przejście z kodu dwójkowego na ósemkowy
Grupujemy od końca zera i jedynki w paczki po trzy i wyznacza-my wartość każdej paczki jako jedną pozycję zapisu
• Przejście z kodu ósemkowego na dwójkowy
Każdą cyfrę z zapisu oktalnego zamieniamy na liczbę zapisaną w kodzie dwójkowym na trzech pozycjach
Wykład 2 5
Algorytm przejścia do kodu o podstawie p
• dzielimy przekształcaną liczbę przez p dopóki nie uzyskamy 0
• zapamiętujemy reszty z kolej-nych dzieleń
• zapisujemy zapamiętane reszty w kolejności od końca
Przykład
DEC BIN
163 1
81 1
40 0
20 0
10 0
5 1
2 0
1 1
0 END
DEC OCT 163 3
20 4
2 2
0 END
Wykład 2 6
Dobrze wiedzieć...
• Należy znać potęgi dwójki przynajmniej od 21 do 216 oraz 232 = 4 294 967 296
• Definicja 1B = 8 bitów = 23 bitów• Definicja 1kB=210B=1024B (ca 1000 B)• Związek pomiędzy rozmiarem rejestru
(adresu) a wymiarem pamięci operacyjnej:
2B =16 bitów 216B=26kB=64kB
Wykład 2 7
Operacje Arytmetyczne • Dodawanie
00001011 11
+00000101 +5
00010000 16
• Mnożenie 1011 11
• 101 • 5
1011 55
1011__
110111
Mnożenie przez 2 - przesunięcie w lewo z dopisaniem 0
11*2=22 <=> 1011*10=10110 Dzielenie przez 2 - przesunięcie w prawo z
wypadaniem najmłodszego bitu11/2=5 <=> 1011/10=101
Wykład 2 8
Arytmetyka uzupełnieniowa do dwóch2's Complementary Arithmetic
Jest to sposób na uwzględnienie liczb ujemnych. Specjalny kod zapisu pozwala sprowadzić odejmowanie liczb całkowitych do ich dodawania: x – y = x + (-y)
ALGORYTM ZMIANY ZNAKU x -x
1. zamieniamy wszystkie
zera na jedynki i odwrotnie 2. Dodajemy 1
Przykład 1 4 -400000100 4
11111011 1 0
+ 1 Dodajemy 1
11111100 Ponoć –4 ?
00000011 W drugą stronę
+ 1 Dodajemy 1
00000100 Hura! Znowu 4!
Wykład 2 9
Przykłady c.d.1. Obliczamy wartość wyrażenia 11 – 5.
Wszystkie operacje na jednym bajcie.00000101 5
11111011 -5
00001011 11
+ 11111011 + (-5)
00000110 6
WŁASNOŚĆ NOTACJI
Najstarszy bit jest bitem znaku
1 – liczba ujemna
2. Obliczamy wartość wyrażenia 100+90. Wszystkie operacje na jednym bajcie.
01100100 100
+ 01011010 + 90
10111110 ?? 190
01000001 1 0
01000010 66
WNIOSEK
Wynik obliczeń: 100 + 90 = -66
Ciekawostka: 100 + 90 + 66 =256 = 28
Wykład 2 10
WŁASNOŚCI KONWENCJIdodajemy 1
• Tabela ma 28 = 256 wierszy (i wartości)
• Interpretacja zależy od przyjętej konwencji
• W arytmetyce bez-względnej: 0 255
• W arytmetyce uzupeł. do dwóch: -128 127
• Na dwóch bajtach można zapamiętać 216 = 65536 wartości
• Bezwg: 0 65535• 2’s: -32768 32767
Binarnie Bez. 2’s c
00000000 0 0
00000001 1 1
00000010 2 2
00000011 3 3
.....................
01111111 127 127
10000000 128 -128
10000001 129 -127
...................
11111110 254 -2
11111111 255 -1
Wykład 2 11
LICZBY RZECZYWISTE
• Zapis w postaci p2m, p – precyzja, m – mantysa;• p ma postać 0.1.... w związku z tym trzech początko-
wych symboli się nie zapamiętuje bo zawsze są takie same. Zamiast tego zapamiętuje się znak;
• m jest zwiększane o połowę zakresu, tak aby było zawsze nieujemne;
• Wniosek: Wcale nie jest tak łatwo pomnożyć liczbę rzeczywistą przez liczbę zapisaną w arytmetyce uzu-pełnieniowej do dwóch (jak się jest komputerem).