Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Podobne dokumenty
Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Podstawy Informatyki. Wykład 2. Reprezentacja liczb w komputerze

Prefiksy binarne. kibibit (Kibit) mebibit (Mibit) gibibit (Gibit) tebibit (Tibit) pebibit (Pibit) exbibit (Eibit) zebibit (Zibit) yobibit (Yibit)

Pracownia Komputerowa wykład VI

Pracownia Komputerowa wyk ad VI

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Podstawy Informatyki

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Teoretyczne Podstawy Informatyki

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Architektura komputerów

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Pracownia Komputerowa wykład V

Technologie Informacyjne

Zapis liczb binarnych ze znakiem

Systemy zapisu liczb.

SYSTEMY LICZBOWE. SYSTEMY POZYCYJNE: dziesiętny (arabski): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 rzymski: I, II, III, V, C, M

Pracownia Komputerowa wykład IV

Wstęp do informatyki- wykład 1 Systemy liczbowe

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

Arytmetyka binarna - wykład 6

Architektura komputerów

Stan wysoki (H) i stan niski (L)

Metoda znak-moduł (ZM)

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

Wstęp do Informatyki. Reprezentacja liczb w komputerze Arytmetyka stało- i zmiennoprzecinkowa Przechowywanie danych pliki i foldery

LICZBY ZMIENNOPRZECINKOWE

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Naturalny kod binarny (NKB)

Kod U2 Opracował: Andrzej Nowak

Pracownia Komputerowa wyk ad IV

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Dodatek do Wykładu 01: Kodowanie liczb w komputerze

Techniki multimedialne

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Kodowanie informacji. Kody liczbowe

Algorytmy i struktury danych. wykład 1

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

architektura komputerów w. 2

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Kodowanie liczb. Reprezentacja liczb całkowitych. Standard IEEE 754. dr inż. Jarosław Forenc

Informatyka 1. Wykład nr 5 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Technologie Informacyjne Wykład 4

Reprezentacja symboli w komputerze. Liczby całkowite i zmiennoprzecinkowe. Programowanie Proceduralne 1

Architektura komputerów

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Kodowanie liczb całkowitych w systemach komputerowych

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

1.1. Pozycyjne systemy liczbowe

Pracownia Komputerowa wyk ad V

BŁĘDY OBLICZEŃ NUMERYCZNYCH

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Arytmetyka stało- i zmiennoprzecinkowa. 1. Informacje wstępne

L6.1 Systemy liczenia stosowane w informatyce

Programowanie Niskopoziomowe

Informatyka 1. Wykład nr 4 ( ) Plan wykładu nr 4. Politechnika Białostocka. - Wydział Elektryczny

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Metody numeryczne II. Reprezentacja liczb

Arytmetyka liczb binarnych

Wprowadzenie do informatyki - ć wiczenia

Podstawy Informatyki

Wstęp do informatyki- wykład 1 Systemy liczbowe

Pozycyjny system liczbowy

LICZBY ZMIENNOPRZECINKOWE

Cyfrowy zapis informacji

ARYTMETYKA KOMPUTERA

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Jednostki informacji - bit. Kodowanie znaków: ASCII, ISO 8859, Unicode liczb: NKB (BCN), U2, BCD. Liczby zmiennoprzecinkowe standard IEEE 754

PODSTAWY INFORMATYKI. Informatyka? - definicja

Arytmetyka stało i zmiennoprzecinkowa

Informatyka kodowanie liczb. dr hab. inż. Mikołaj Morzy

dr inż. Jarosław Forenc

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Adam Korzeniewski p Katedra Systemów Multimedialnych

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Wprowadzenie do informatyki - ć wiczenia

Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy

Pracownia komputerowa. Dariusz Wardecki, wyk. VI

Typ użyty w deklaracji zmiennej decyduje o rodzaju informacji, a nazwa zmiennej symbolicznie opisuje wartość.

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Adam Korzeniewski p Katedra Systemów Multimedialnych

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Transkrypt:

Podstawy Informatyki Metalurgia, I rok Wykład 3 Liczby w komputerze

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

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. x = 4 3 2 1 = 4 i= p podstawa systemu pozycyjnego. c c c c c c i p Do zapisu liczby służą cyfry c i (których jest p) ustawiane na kolejnych pozycjach.pozycje numerujemy od zaczynając od strony prawej zapisu. Każda pozycja posiada swoją wagę równą p i. Wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji. i

Systemy pozycyjne zapis liczby ułamkowej x = c.... c c c c n 1 2 1 1 2... m = c c n 1 i= m c i p i Część ułamkowa liczby m pozycji. Część całkowita liczby n pozycji. Wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji.

System dwójkowy (binarny) Gottfried Leibnitz, XVIIw. Cyfry:, 1. Przykład: 11111.111 (2) = 1*2 5 + 1*2 4 + *2 3 + 1*2 2 + 1*2 1 + 1*2. + 1*2-1 + 1*2-2 + *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.

Konwersja kodu dziesiętnego na dwójkowy Część całkowitą liczby dzielimy sukcesywnie przez 2 i bierzemy reszty 55.8125 Część ułamkową liczby mnożymy sukcesywnie przez 2 i bierzemy część całkowitą 55 1 8125 27 1 1 625 13 1 1 25 6 5 3 1 1 1 1 55 (1) =11111 (2).8125 (1) =.111 (2) 55.8125 (1) =11111.111 (2)

System szesnastkowy Cyfry:, 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: Cyfra (1) (2) Cyfra (1) 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 1 11 1 11 11 111 Przykład: 37.D = 3*16 1 + 7*16 + D*16-1 8 9 A B C D E F 8 9 1 11 12 13 14 15 (2) 1 11 11 111 11 111 111 1111

Reprezentacja 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). 1 1 1 1 1 znak (najbardziej znaczący bit) moduł liczby (7 bitów). Liczba nieujemna jest kodowana jako: znak i kod binarny modułu tej liczby. np. liczba 55 w przykładzie powyżej.

Liczba ujemna jest kodowana jako: znak 1 i kod binarny modułu tej liczby. Liczba -55 111111 bo 11111 (2) =55 (1) = -55 + Sposób wygodny dla człowieka. Przy operacjach arytmetycznych trzeba porównać znaki. Podwójna reprezentacja liczby : oraz 1 (redundancja). Zakres liczb: [-2 n-1 + 1, 2 n-1-1] (2 n - 1 liczb).

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 2 n -1 +x. Sposób 1: liczba -55 1) Kod binarny modułu (=55): 11111 2) Negacja bitowa: 111 Sposób 2: liczba -55 1) Kod binarny liczby 2 8-1 -55 =256-56 =2: 111 Sposób mało wygodny dla człowieka. + Łatwe operacje arytmetyczne. Dwie reprezentacje liczby : oraz 11111111. Zakres liczb: [-2 n-1 + 1, 2 n-1-1] (2 n - 1 liczb).

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 1 1 1 1 (77) + 1 1 1 1 (-43) 1 1 + 1 1 1 (34) 1 1 1 1 1 1 1 1 (-77) + 1 1 1 1 (-43) 1 1 1 + 1 1 1 1 1 (-12)

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 2 n +x. Sposób 1: liczba -55 1) Kod binarny modułu (=55): 11111 2) Negacja bitowa: 111 3) Dodanie 1: 1111 Sposób mało wygodny dla człowieka. + Łatwe operacje arytmetyczne. Jedna reprezentacja liczby : Zakres liczb: [-2 n-1, 2 n-1-1] (2 n liczb). Sposób 2: liczba -55 1) Kod binarny liczby 2 8-55 =256-55 =21: 1111

Dodawanie w kodzie U2 Dodawanie w kodzie U2 odbywa się zgodnie z zasadami dodawania dwójkowego 1 1 1 1 1 1 1 1 (-77) + 1 1 1 1 (43) 1 1 1 1 1 1 (-34) 1 1 1 1 1 1 1 1 1 1 (77) + 1 1 1 1 1 (-43) 1 1 (34) 1 1 1 1 1 1 1 1 1 1 1 1 (-77) + 1 1 1 1 1 (-43) 1 1 (-12)

Liczby ułamkowe stałoprzecinkowe Liczba stałopozycyjna (n +m)-bitowa 1 1 1 1 1 posiada n bitów przeznaczonych na część całkowitą oraz m bitów przeznaczonych na kodowanie części ułamkowej. c n 1... c3c2c1c. c 1c 2... c m = Założenie: liczba bez znaku. Wartość największa: 2 n -1 + 1 2 -m = 2 n 2 -m Wartość najmniejsza: + 2 -m = 2 -m n 1 i= m c i p i

Liczby zmiennoprzecinkowe (floating( floating-point numbers) Liczba zmiennoprzecinkowa x =(-1) s m p c s znak liczby, m mantysa, p podstawa systemu, c cecha. m e = 9.19 x 1-31 kg G = 6.67 x 1-11 m 3 kg -1 s -2 N A = 6.22 x 1 23 mol -1

Normalizacja liczby zmiennoprzecinkowej Położenie przecinka w liczbie zmiennoprzecinkowej nie jest ustalone. 273.16 = 2.7316 x 1 2 =.27316 x 1 3 = 27316 x 1-2 Znormalizowana liczba zmiennoprzecinkowa to taka liczba, której mantysa spełnia zależność: W systemie dziesiętnym: czyli m= 1.... 9.999999 1 m <p 1 m 1 W systemie dwójkowym znormalizowana liczba zmiennoprzecinkowa ma zawsze część całkowitą równą ±1.

Zatem, do zakodowania liczby zmiennoprzecinkowej potrzeba zakodować (przyjmujemy, ze podstawa będzie równa 2): znak, mantysę, cechę.

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 8 bitów), wartosci specjalne (np. nieskończoność, NaN), zmiennoprzecinkowe operacje, modele zaokrąglania, wyjątki.

Ogólny format w standardzie IEEE 754 sign(bit znaku): liczba dodatnia, 1 liczba ujemna, exponent (cecha): kod z nadmiarem (BIAS = 2 e-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 Typ zera liczby nieznormalizowane liczby znormalizowane nieskończoności NaN (nieokreślone) Cecha od 1 do 2 e-1 2 e -1 2 e -1 Mantysa dowolna

Liczby pojedynczej precyzji 31 23 bit znaku: liczba dodatnia, 1 liczba ujemna, cecha: (BIAS =127), zakres: -126 127, mantysa: m =1.fraction Znormalizowane liczby o najmniejszym module: ±2-126 ±1.175494351 1-38 Liczby o największym module: ±((1 - (1/2) 24 )2 128 ) ± 3.428235 1 38

Liczby podwójnej precyzji 63 52 bit znaku: liczba dodatnia, 1 liczba ujemna, cecha: (BIAS =123), zakres: -122 123, mantysa: m =1.fraction Znormalizowane liczby o najmniejszym module: ±2-122 ±2.225738585722 1-38 Liczby o największym module: ±((1 - (1/2) 53 )2 124 ) ± 1.7976931348623157 1 38

Stał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)

Zmienne są różnych typów: całkowite : 1, 2, 128 rzeczywiste :.456, -734.129 logiczne : true, false znakowe : imie, adres itp.

Typy 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.42823E+38 REAL*8 (8 bajtów) ±2.22574D-38 1.797693D+38 COMPLEX (zespolony) para liczb REAL LOGICAL (logiczny).true..false. długość jak INTEGER CHARACTER*1 1 bajt CHARACTER*n n bajtów

SHORTINT (-128..127) INTEGER (-32768..32767} Typy zmiennych w Pascalu LONGINT {-2147483648..2147483647} BYTE {..255} WORD {..65535} 1 bajt 2 bajty 4 bajty 1 bajt 2 bajty BOOLEAN {TRUE/FALSE} logiczny 1/8 bajta CHAR 1 znak STRING -255 znaków REAL {2.9E-39.. 1.7E38} DOUBLE {5.E-324.. 1.7E38} EXTENDED {1.9E-4951.. 1.1E4932} 1 bajt 6 bajtów 8 bajtów 1 bajtów

Typy 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.. 255 (jeśli jest bez znaku).

Tablice 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. 1 2 3 4 5 6 7 a S = a + + + 1 a 2... a n

Dlaczego tablice? Jeśli n=3, to nie tak ważne. A jeśli n=1? - deklarujemy jedną zmienną tablicową a nie 1 zwykłych. - w programie można łatwo odwołać się do elementu, którego numer jest wyliczany, np.: k=2*i-1 Dla i=5 mamy k=9 Do zmiennej tablicowej A odwołujemy się: x:=a[9], lub x:=a[k], a nawet x:=a[2*i-1] Proste? A gdyby nie było zmiennych tablicowych?

Dlaczego tablice, cd. Przykład programu: k=2*i-1 wybierz k z: 1: x:=a1 2: x:=a2 3: x:=a3... 9: x:=a9... 1: x:=a1 Bez sensu!

Deklraracje tablic FORTRAN: DIMENSION A(1) INTEGER B(55) Uwaga! Indeksy tablic od 1 a(1)..a(1) PASCAL: A:array [1..1] of real; B:array[1..55] of integer; C: double a[1]; int b[55]; Uwaga! Indeksy tablic od a[]..a[99]