Informatyka I Język ANSI C

11
Wykład 2 1 Informatyka I Język ANSI C Kody pozycyjne

description

Informatyka I Język ANSI C. Kody pozycyjne. Liczby ca ł kowite Interpretacja notacji. ( x n x n-1 x n-2 .... x 1 x 0 ) p = = x n • p n + x n-1 • p n-1 + x n-2 • p n-2 + ... x 1 • p + x 0 Przykład: 152 10 = 1 • 100 + 5 • 10 +2 • 1 = 152 152 8 = 1 • 64 + 5 • 8 + 2 = 106 - PowerPoint PPT Presentation

Transcript of Informatyka I Język ANSI C

Page 1: Informatyka I Język ANSI C

Wykład 2 1

Informatyka IJęzyk ANSI C

Kody pozycyjne

Page 2: Informatyka I Język ANSI C

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!!

Page 3: Informatyka I Język ANSI C

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

Page 4: Informatyka I Język ANSI C

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

Page 5: Informatyka I Język ANSI C

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

Page 6: Informatyka I Język ANSI C

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

Page 7: Informatyka I Język ANSI C

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

Page 8: Informatyka I Język ANSI C

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!

Page 9: Informatyka I Język ANSI C

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

Page 10: Informatyka I Język ANSI C

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

Page 11: Informatyka I Język ANSI C

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).