30
Podstawy Informatyki Podstawy Informatyki Metalurgia, I rok Wyklad 3 Liczby w komputerze

Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Embed Size (px)

Citation preview

Page 1: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Podstawy InformatykiPodstawy Informatyki

Metalurgia, I rok

Wykład 3

Liczby w komputerze

Page 2: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Jednostki informacji Jednostki informacji

Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych stanów przyjął układ.

Jednostka informacji (1b).

Bajt (ang. byte) (Shannon, 1948) Najmniejsza adresowalna jednostka informacji pamięci komputerowej, składająca się z bitów.

Zazwyczaj przyjmuje się, że 1B = 8b (oktet), ale nie jest to reguła!

Najbardziej znaczący bit (bajt) - bit (bajt) o największej wadze (w zapisie z lewej strony).

Najmniej znaczący bit (bajt) - bit (bajt) o najmniejszej wadze (w zapisie z prawej strony).

Page 3: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Systemy pozycyjne Systemy pozycyjne

W pozycyjnych systemach liczbowych ten sam symbol

(cyfra) ma różną wartość w zależności od pozycji, którą

zajmuje w zapisie danej liczby.

∑=

==

4

0

01234

i

i

i pccccccx

p — podstawa systemu pozycyjnego.

Do zapisu liczby służą cyfry ci (których jest p) ustawiane na

kolejnych pozycjach.Pozycje numerujemy od 0 zaczynając od strony prawej zapisu.

Każda pozycja posiada swoją wagę równą pi .

Wartość liczby obliczamy sumując iloczyny cyfr przez wagi

ich pozycji.

Page 4: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Systemy pozycyjne Systemy pozycyjne –– zapis liczby ułamkowej zapis liczby ułamkowej

∑−

−=

−−−−==

1

210121...... .

n

mi

i

imn pccccccccx

•Część ułamkowa liczby — m pozycji.

•Część całkowita liczby — n pozycji.

•Wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji.

Page 5: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

System dwójkowy (binarny)System dwójkowy (binarny)

Gottfried Leibnitz, XVIIw.

Cyfry: 0, 1.

Przykład:

110111.1101(2) = 1*25 + 1*24 + 0*23 + 1*22 + 1*21 + 1*20 .

+ 1*2-1 + 1*2-2 + 0*2-3 + 1*2-4

•System ten jest wygodny maszyny.

•Reprezentacja cyfry binarnej zajmuje dokładnie jeden bit.

•n-cyfrowa liczba binarna bez znaku zajmuje n bitów w

pamięci komputera.

Page 6: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Konwersja kodu dziesiętnego na dwójkowyKonwersja kodu dziesiętnego na dwójkowy

Część całkowitą liczby

dzielimy sukcesywnie przez

2 i bierzemy reszty

55(10)=110111(2)

Część ułamkową liczby

mnożymy sukcesywnie przez 2 i

bierzemy część całkowitą

0.8125(10)=0.1101(2)

11

13

06

113

127

155

55.8125

01

50

251

6251

8125

55.8125(10)=110111.1101(2)

Page 7: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

System szesnastkowySystem szesnastkowy•Cyfry: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

•System łaczy zalety systemu binarnego (dobre wykorzystanie pamięci) oraz dziesiątkowego (zwięzłość).

•Reprezentacja cyfry szesnastkowej zajmuje 4 bity:

11177

11066

10155

10044

1133

1022

111

000

(2)(10)Cyfra

111115F

111014E

110113D

110012C

101111B

101010A

100199

100088

(2)(10)Cyfra

Przykład: 37.D = 3*161 + 7*160 + D*16-1

Page 8: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Reprezentacja liczb całkowitychReprezentacja liczb całkowitych

Założenie: liczba całkowita ze znakiem jest zapisywana w

słowach n-bitowych. (Dla przykładu weźmy n = 8).

0 0 1 1 0 1 1 1

znak (najbardziej znaczący bit)

moduł liczby (7 bitów).

Liczba nieujemna

jest kodowana jako: znak 0 i kod binarny modułu tej liczby.

np. liczba 55 w przykładzie powyżej.

Page 9: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Liczba ujemna

jest kodowana jako: znak 1 i kod binarny modułu tej liczby.

Liczba -55

10110111

bo 0110111(2) =55(10) =|-55|

+ Sposób wygodny dla człowieka.

– Przy operacjach arytmetycznych trzeba porównać znaki.

– Podwójna reprezentacja liczby 0: 00000000 oraz 10000000

(redundancja).

Zakres liczb: [-2n-1 + 1, 2n-1 - 1] (2n - 1 liczb).

Page 10: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Kod uzupełnień do 1 (U1) Kod uzupełnień do 1 (U1)

Liczba ujemna x (analogicznie przeciwna) jest kodowana na

jeden z dwóch (równoważnych) sposobów:

negujemy (bitowo) kod binarny modułu x

albo bierzemy kod binarny liczby 2n -1 +x.

Sposób 1: liczba -55

1) Kod binarny modułu (=55):

00110111

2) Negacja bitowa:

11001000

Sposób 2: liczba -55

1) Kod binarny liczby

28 -1 -55 =256 -56 =200:

11001000

– Sposób mało wygodny dla człowieka.

+ Łatwe operacje arytmetyczne.

– Dwie reprezentacje liczby 0: 00000000 oraz 11111111.

Zakres liczb: [-2n-1 + 1, 2n-1 - 1] (2n - 1 liczb).

Page 11: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Zasady dodawania Zasady dodawania

1 Liczby zapisane w kodzie U1 dodajemy zgodnie z zasadami dodawania dwójkowego, ale

2 jeżeli wystąpi przeniesienie poza bit znaku, to do wyniku

należy dodać 1. Z przeniesieniem

1 1 1 1 1

0 1 0 0 1 1 0 1 (77)

+ 1 1 0 1 0 1 0 0 (-43)

0 0 1 0 0 0 0 1

+ 0 0 0 0 0 0 0 1

0 0 1 0 0 0 1 0 (34)

1 1 1 1

1 0 1 1 0 0 1 0 (-77)

+ 1 1 0 1 0 1 0 0 (-43)

1 0 0 0 0 1 1 0

+ 0 0 0 0 0 0 0 1

1 0 0 0 0 1 1 1 (-120)

Page 12: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Kod uzupełnień do 2 (U2) Kod uzupełnień do 2 (U2) Liczba ujemna x (analogicznie przeciwna) jest kodowana na jeden z dwóch (równoważnych) sposobów:

•negujemy (bitowo) kod binarny modułu x i dodajemy 1;

•bierzemy kod binarny liczby 2n +x.

Sposób 1: liczba -55

1) Kod binarny modułu (=55): 00110111

2) Negacja bitowa: 11001000

3) Dodanie 1:

11001001

Sposób 2: liczba -55

1) Kod binarny liczby

28 -55 =256 -55 =201:

11001001

– Sposób mało wygodny dla człowieka.

+ Łatwe operacje arytmetyczne.

– Jedna reprezentacja liczby 0: 00000000

Zakres liczb: [-2n-1 , 2n-1 -1] (2n liczb).

Page 13: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Dodawanie w kodzie U2 Dodawanie w kodzie U2

Dodawanie w kodzie U2 odbywa się zgodnie z zasadami dodawania dwójkowego

1 1 1

1 0 1 1 0 0 1 1 (-77)

+ 0 0 1 0 1 0 1 1 (43)

1 1 0 1 1 1 1 0 (-34)

1 1 1 1 1 1

0 1 0 0 1 1 0 1 (77)

+ 1 1 0 1 0 1 0 1 (-43)

0 0 1 0 0 0 1 0 (34)

1 1 1 1 1 1 1

1 0 1 1 0 0 1 1 (-77)

+ 1 1 0 1 0 1 0 1 (-43)

1 0 0 0 1 0 0 0 (-120)

Page 14: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Liczby ułamkowe stałoprzecinkowe Liczby ułamkowe stałoprzecinkowe

Liczba stałopozycyjna (n +m)-bitowa

0 0 1 1 0 1 1 1

posiada n bitów przeznaczonych na część całkowitą oraz

m bitów przeznaczonych na kodowanie części ułamkowej.

Założenie: liczba bez znaku.

Wartość największa:

2n-1 + 1 – 2-m = 2n – 2-m

Wartość najmniejsza:

0+ 2-m = 2-m

∑−

−=

−−−−=

1

2101231.......

n

mi

i

imn pccccccccc

Page 15: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Liczby zmiennoprzecinkowe (Liczby zmiennoprzecinkowe (floatingfloating--pointpoint

numbersnumbers) )

Liczba zmiennoprzecinkowa

x =(-1)s · m · pc

s — znak liczby,

m — mantysa,

p — podstawa systemu,

c — cecha.

me = 9.109 x 10-31 kg

G = 6.67 x 10-11 m3kg-1s-2

NA = 6.022 x 1023 mol-1

Page 16: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Normalizacja liczby zmiennoprzecinkowej Normalizacja liczby zmiennoprzecinkowej

Położenie przecinka w liczbie zmiennoprzecinkowej nie jest

ustalone.

273.16 = 2.7316 x 102 = 0.27316 x 103 = 27316 x 10-2

Znormalizowana liczba zmiennoprzecinkowa

to taka liczba, której mantysa spełnia zależność:

1≤ |m|<p

W systemie dziesiętnym:

1≤ |m| ≤ 10

czyli m= 1.000000 ... 9.999999

W systemie dwójkowym znormalizowana liczba

zmiennoprzecinkowa ma zawsze część całkowitą równą ±1.

Page 17: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Zatem, do zakodowania liczby zmiennoprzecinkowej

potrzeba zakodować (przyjmujemy, ze podstawa będzie

równa 2):

•znak,

•mantysę,

•cechę.

Page 18: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Standard IEEE 754 Standard IEEE 754

W celu ujednolicenia reprezentacji binarnej oraz operacji

numerycznych na różnych platformach sprzętowych,

wprowadzono standard zapisu zmiennoprzecinkowego

IEEE 754 (William Kahan).

Standard ten definiuje:

•formaty reprezentacji liczb zmiennoprzecinkowych:

�single-precision (32 bity),

�double-precision (64bity),

�single-extended precision (≥ 43 bitów)

�double-extended precision (≥ 79 bitów, zazwyczaj 80 bitów),

•wartosci specjalne (np. nieskończoność, NaN),

•zmiennoprzecinkowe operacje,

•modele zaokrąglania,

•wyjątki.

Page 19: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Ogólny format w standardzie IEEE 754Ogólny format w standardzie IEEE 754

sign(bit znaku): 0 — liczba dodatnia, 1 — liczba ujemna,exponent (cecha): kod z nadmiarem (BIAS = 2e-1 - 1),fraction (mantysa): liczba stałoprzecinkowa, kod U1, pozbawiona najbardziej znaczącego bitu reprezentującego część całkowitą — bit ten nie jest przechowywany. e – liczba bitów cechy

0

≠0

dowolna

0

≠0

0

0

od 1 do 2e-1

2e-1

2e-1

zera

liczby nieznormalizowane

liczby znormalizowane

nieskończoności

NaN (nieokreślone)

MantysaCechaTyp

Page 20: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Liczby pojedynczej precyzji Liczby pojedynczej precyzji

00000000000000000000000000000000

31 23 0

•bit znaku: 0 — liczba dodatnia, 1 — liczba ujemna,

•cecha: (BIAS =127), zakres: -126 ÷127,

•mantysa: m =1.fraction

•Znormalizowane liczby o najmniejszym module:

±2-126 ≈±1.175494351 ·10-38

•Liczby o największym module:

±((1 - (1/2)24)2128)≈± 3.4028235 ·1038

Page 21: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Liczby podwójnej precyzjiLiczby podwójnej precyzji

63 52 0

•bit znaku: 0 — liczba dodatnia, 1 — liczba ujemna,

•cecha: (BIAS =1023), zakres: -1022 ÷1023,

•mantysa: m =1.fraction

•Znormalizowane liczby o najmniejszym module:

±2-1022 ≈±2.2250738585072020 ·10-308

•Liczby o największym module:

±((1 - (1/2)53)21024)≈± 1.7976931348623157 ·10308

Page 22: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Stałe i zmienneStałe i zmienne

� Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w

matematyce.

� Stałe i zmienne muszą posiadać nazwę i posiadają

przypisaną wartość.

� Nazwa jest ciągiem znaków, z których pierwszy musi być literą, np.: x, alfa1, pierwiastek1,

� Obowiązują tylko znaki ASCII (abc...z, ABC...XYZ). Nie ma polskich liter ani greckich.

� Charakter zmiennych jest deklarowany we wstępnej części programu (zazwyczaj zaraz na początku, przed

instrukcjami właściwymi programu)

Page 23: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Zmienne są różnych typów:

• całkowite : 1, 2, 128

• rzeczywiste : 0.456, -734.129

• logiczne : true, false

• znakowe : imie, adres

• itp.

Page 24: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Typy zmiennych w FortranieTypy zmiennych w FortranieTypy zmiennych w Fortranie

•INTEGER*1 (1 bajt) -128÷127

•INTEGER*2 (2 bajty) -32768÷32767

•INTEGER*4 (4bajty) -2147483648÷2147483647

•REAL*4 (4 bajty) ±1.175494E-38 ÷ 3.402823E+38

• REAL*8 (8 bajtów) ±2.225074D-308 ÷1.797693D+308

•COMPLEX (zespolony) para liczb REAL

•LOGICAL (logiczny) .true. .false. długość jak INTEGER

•CHARACTER*1 1 bajt

•CHARACTER*n n bajtów

Page 25: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Typy zmiennych w PascaluTypy zmiennych w PascaluTypy zmiennych w Pascalu

•SHORTINT (-128..127) 1 bajt

•INTEGER (-32768..32767} 2 bajty

•LONGINT {-2147483648..2147483647} 4 bajty

•BYTE {0..255} 1 bajt

•WORD {0..65535} 2 bajty

•BOOLEAN {TRUE/FALSE} – logiczny 1/8 bajta

•CHAR 1 znak 1 bajt

•STRING 0-255 znaków

•REAL {2.9E-39 .. 1.7E38} 6 bajtów

•DOUBLE {5.0E-324 .. 1.7E308} 8 bajtów

•EXTENDED {1.9E-4951 .. 1.1E4932} 10 bajtów

Page 26: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Typy danych w języku CTypy danych w języku CTypy danych w języku C

•int - typ całkowity. Zmienne tego typu typu mogą przyjmować wartości całkowite dodatnie lub ujemne.•short int - typ całkowity krótki•long int - typ całkowity długi•float - typ zmiennoprzecinkowy pojedynczej precyzji.•double - typ zmiennoprzecinkowy podwójnej precyzji.•long double - typ zmiennoprzecinkowy podwójnej precyzji długi.•void - typ pusty oznaczający brak wartości (stosowany w ANSI C).Tylko parametry przekazywane do funkcji mogą być typu void (oznacza wtedy, że do funkcji nic się nie przekazuje) lub zwracane przez funkcję (funkcja nic nie zwraca). Oprócz tego typ void może być stosowany przy tworzeniu pewnych typów złożonych.•char - typ znakowy. Można za jego pomocą przechowywać znaki w kodzie ASCII. Na ogół typ char ma 1 bajt długości w związku z czym można za jego pomocą przechowywać liczby z zakresu -128 .. 127 (jeśli jest ze znakiem) lub 0 .. 255 (jeśli jest bez znaku).

Page 27: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

TabliceTablice

� Tablica jest to struktura danych zawierająca uporządkowany zbiór obiektów tego samego typu i odpowiada

matematycznemu pojęciu wektora, macierzy, zmiennych

indeksowych, itp.

n21a...aaS +++=

1 2 3 4 5 6 7

a

Page 28: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Dlaczego tablice?Dlaczego tablice?

� Jeśli n=3, to nie tak ważne.

� A jeśli n=100?

- deklarujemy jedną zmienną tablicową a nie 100 zwykłych.

- w programie można łatwo odwołać się do elementu,

którego numer jest wyliczany, np.: k=2*i-1Dla i=5 mamy k=9

Do zmiennej tablicowej A odwołujemy się: x:=A[9], lubx:=A[k], a nawet x:=A[2*i-1]

� Proste?

� A gdyby nie było zmiennych tablicowych?

Page 29: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Dlaczego tablice, cd.Dlaczego tablice, cd.

� Przykład programu:k=2*i-1

wybierz k z:

1: x:=A12: x:=A2

3: x:=A3...

9: x:=A9...

100: x:=A100

� Bez sensu!

Page 30: Podstawy Informatyki - metal.agh.edu.plwilk/wyk-dzmet/w_met3.pdf · Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma ró żną warto ść w zale żno

Deklraracje tablicDeklraracjeDeklraracje tablictablic

•FORTRAN:DIMENSION A(100)INTEGER B(55)

Uwaga! Indeksy tablic od 1 a(1)..a(100)

•PASCAL:A:array [1..100] of real;B:array[1..55] of integer;

•C:double a[100];

int b[55];Uwaga! Indeksy tablic od 0 a[0]..a[99]