• Nie Znaleziono Wyników

4. Reprezentacje liczb w komputerze

N/A
N/A
Protected

Academic year: 2021

Share "4. Reprezentacje liczb w komputerze"

Copied!
3
0
0

Pełen tekst

(1)

str. 6

4. Reprezentacje liczb w komputerze

Kodowanie liczb opiera się na ich konwersji na system binarny. Nie mniej trzeba jeszcze pamiętad, że dana liczba zajmuje z góry określoną liczbę bitów oraz określid jak zapisad liczby ujemne i ułamki.

4.1. Liczby całkowite.

Umowa: Wszystkie liczby naturalne mają identyczny kod (na danej liczbie bitów). Najstarszy bit jest bitem znaku i dla liczb dodatnich ma wartośd zero. Pozostałe bity prezentują liczbę bn-22n-2 + ... + b222 + b121 + b020 (tzn. bit bi

ma wagę 2i). Przy kodowaniu liczb całkowitych ujemnych bit znaku przyjmuje wartośd 1 ale w różnych kodach ma różne znaczenie.

Kod ZM (kod znak-moduł)

LZM = (-1)bn-1 ∙ (bn-22n-2 + ... + b222 + b121 + b020)

26 

-26 

Bity bn-2,…, b2, b1, b0 są bitami modułu kodowanej liczby a bit bn-1 jest - zgodnie z umową - bitem znaku. Ten sposób kodowania ma następujące wady: występują dwie reprezentacje zera oraz nie można stosowad naturalnych operacji arytmetycznych.

Kod U2 (kod uzupełnieo do 2)

LU2 = bn-1∙(-2n-1) + bn-22n-2 + ... + b222 + b121 + b020)

W kodzie U2 najstarszy bit n-bitowej reprezentacji ma wagę -2n-1, a pozostałe bity tradycyjnie: +2n-2, +2n-3,….

Kodowanie U2 jest obecnie najpopularniejszą reprezentacją liczb całkowitych (oraz ułamkowych przedstawionych w formacie stałoprzecinkowym). Operacje dodawania i odejmowania są w nim wykonywane naturalnie.

Algorytm zapisu liczby ujemnej w kodzie U2:

1. Zapisz moduł liczby w ZM.

2. Dokonaj inwersji bitów (czyli pozamieniaj 0 na 1 i odwrotnie:);

3. Zwiększ wynik o 1.

Np. Liczba -27 na 8 bitach w U2:

 

1. Zapisujemy liczbę 27 na 8bitach 2. Zamieniamy bity 3. Dodajemy 1 i mamy -27 w U2

Natomiast 10101001U2 = -27+(25+23+1) = -128+41 = -87 4.2. Liczby rzeczywiste.

Zapis stałopozycyjny.

Do zapisu liczby stałoprzecinkowej przeznaczona jest z góry określona liczba bitów, a pozycję przecinka ustala się arbitralnie, w zależności od wymaganej dokładności, wolne bity uzupełniając zerami. Do reprezentacji liczb ze znakiem stosuje siejże kod U2.

Np. Liczba 6,25=110,01(2) zapisana na 8 bitach gdy częśd ułamkowa zajmuje 3 najmłodsze bity, ma postad:

Natomiast liczba -6,25=-110,01(2) zapisana w powyższym formacie w kodzie U2, ma postad:

0 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0

0 0 0 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1

0 0 1 1 0 0 1 0

1 1 0 0 1 1 1 0

część całkowita część ułamkowa

(2)

str. 7

Zapis zmiennopozycyjny.

Liczba zmiennoprzecinkowa jest komputerową reprezentacją liczb rzeczywistych zapisanych w postaci wykładniczej o podstawie 2. Na zajęciach będziemy stosowali następującą notację:

BIAS c z

C

z

M      m

 1 ) 2 ( 1 ) ( 1 ) 2 (

gdzie:

(-1)z - znak liczby

M=1+m - znormalizowana mantysa (liczba spełniająca warunek: 1M<2). Ponieważ przed przecinkiem stoi zawsze 1, więc można ją przedstawid w postaci 1+m, gdzie m jest liczbę ułamkową: 0m<1)

C=c-BIAS - cecha (liczba całkowita), która dzięki zastosowaniu stałej BIAS pozwoli przedstawid cechę w postaci różnicy c-BIAS (c jest liczbą całkowitą dodatnią, tzw spolaryzowana cechę)

BIAS - stała (liczba całkowita BIAS zależna od danej implementacji – rozwiązuje problem znaku cechy)

Kodujemy wyłącznie:

z - bit znaku

m - mantysę pomniejszoną o 1 c - cechę przesuniętą o BIAS

Np. Załóżmy, że operujemy następującym zmiennopozycyjnym formatem zapisu liczby rzeczywistej:

 na zapis przeznaczamy 16 bitów.

 najstarszy bit (b15) to bit znaku (będziemy stosowad kod ZM),

 kolejne 6 bitów (b9-b14) to mantysa

 pozostałe bity (b0-b8) są przeznaczone na zapis cechy i przyjmijmy, że BIAS=9.

Przedstawimy liczbę +0,0224609375 w powyższym formacie. Naszą liczbę zapisujemy w systemie binarnym w postaci wykładniczej o podstawie 2, przesuwamy przecinek zapisując ją w notacji wykładniczej:

Znak: (-1)0

0,0224609375 = 0,0000010111

(2)

= 1,0111

(2)

 2

-6

Mantysa:

1,0111

2

Cecha :

-6 = 3-9 = 11

2

- BIAS

Oto liczba 0,0224609375 zapisana w zadanym formacie:

Żeby rozkodowad jakąś liczbę, np. 1101110000001101 zapisaną w powyższym formacie, przeprowadzamy operację odwrotną:

Znak: (-1)1

Mantysa:

1,10111

2

=-1,10111

2

∙2

4

= 11011,1

2

= 27,5

Cecha :

1101

2

– BIAS=13-9=4

Uwaga:

 Powszechnie w procesorach i oprogramowaniu obliczeniowym wykorzystuje się binarny zapis zmiennopozycyjnym zgodnym ze standardem IEEE 754

(np. format 32-bitowy z polami: b31-znak, b23..30-cecha (BIAS=127), b0..22-mantysa, ).

W przedstawieniu tym cecha, która jest ciągiem zer (albo ciągiem jedynek) nadaje kodowi specjalne znaczenie, np.

01111111100000000000000000000000  + 00000000000000000000000000000000  0

Gdy cecha jest ciągiem zer, mantysa jest zdenormalizowana tzn. 0,5M<1 Ze względów dydaktycznych będziemy stosowali uproszczone formaty.

 Używając formatu zmiennopozycyjnego należy pamiętad o takich zagadnieniach jak: zakres (problem z przepełnieniem i niedomiarem), zaokrąglanie, kolejnośd wykonywania działao (nie ma np. łączności)

 Liczbę, którą można dokładnie zapisad w danym formacie nazywamy liczbą maszynową.

0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1

(3)

str. 8

Zadania

z.4.1. Uzupełnij tabelkę (do zapisu liczb w kodzie ZM i U2 użyj minimalnej wielokrotności 8 bitów) :

(10) ZM U2

1947 -1947

01001110 11001110

01001101 11001101 z.4.2. Podaj zakres liczb całkowitych jakie można zapisad na 8 bitach:

a) w kodzie ZM b) w kodzie U2

z.4.3. Uzasadnij, że liczba -1 w kodzie U2 jest reprezentowana zawsze jako ciąg jedynek.

z.4.4. Rozkoduj ciąg 10010001 zapisany w formacie stałopozycyjnym 8-bitowym:

a) b0..5 – częśd całkowita, b6..7 – częśd ułamkowa (bez znaku) b) b0..2 – częśd ułamkowa, b3..7 – częśd całkowita (bez znaku) c) b0..2 – częśd ułamkowa, b3..6 – częśd całkowita, b7-znak (ZM) d) b0..2 – częśd ułamkowa, b3..7 – częśd całkowita (U2)

z.4.5. Zapisz liczbę -112,09375 w 16-bitowym formacie stałopozycyjnym:

a) b0..7 – częśd ułamkowa, b8..14 – częśd całkowita, b15-znak (ZM) b) b0..7 – częśd ułamkowa, b8..15 – częśd całkowita (U2)

z.4.6. Podaj zakres i dokładnośd liczb jakie można zapisad w formacie stałopozycyjnym 8-bitowym (bez znaku):

a) gdy częśd ułamkowa zajmuje 2 najmłodsze bity b) gdy częśd ułamkowa zajmuje 5 najstarszych bitów

z.4.7. Zapisz w 16 bitowym formacie zmiennopozycyjnym: b15-znak, b7..14-znormalizowana mantysa, b0..6 spolaryzowana cecha przy BIAS=20:

a) 9,1875 b) 0,09375

c) 503 d) -9,09375 z.4.8. Rozkoduj ciąg 10010001 zapisany w formacie zmiennopozycyjnym 8-bitowym:

a) b7-znak, b3..6-znormalizowana mantysa, b0..2 spolaryzowana cecha przy BIAS=8 b) b7-znak, b3..6-znormalizowana mantysa, b0..2 spolaryzowana cecha przy BIAS =10 c) b0-znak, b4..7-znormalizowana mantysa, b1..3 spolaryzowana cecha przy BIAS =10 d) b0-znak, b1..3-znormalizowana mantysa, b4..7 spolaryzowana cecha przy BIAS =10

z.4.9. Podaj zakres jaki uzyskamy kodując liczby w formacie zmiennopozycyjnym 8 bitowym: b7-znak, b3..6- znormalizowana mantysa, b0..2-spolaryzowana cecha przy BIAS =8.

z.4.10. Wypisz i zaznacz na osi wszystkie liczby jakie można zakodowad na 4 bitach w formacie zmiennopozycyjnym, gdy najstarszy bit jest bitem znaku, dwa następne bity są bitami spolaryzowanej cechy o stałej BIAS =1, a najmłodszy bit jest bitem znormalizowanej mantysy.

z.4.11. Określ, która z liczb jest liczbą maszynową, która z przepełnienia a która z niedomiaru gdy zapisane są w formacie „zccmm” i są zapisane bez zastrzeżenia o cechach będących ciągiem jedynek i denormalizacji mantysy:

a) 2 b) 0,2

z.4.12. Rozkoduj liczy zapisane w formacie IEEE 754:

a) 01000001110110000000000000000000(IEEE 754)

b) 10111110000000000000000000000000(IEEE 754)

c) -20 d) -2,2

Cytaty

Powiązane dokumenty

Głównym celem naukowym może być rozwinięcie dydaktyki matematyki jako uznanej dziedziny badań

Potrafię odczytać ułamki i liczby mieszane przedstawione na osi liczbowej.. Lekcja

• cz¦±¢ pierwsza: nale»y j¡ rozwi¡za¢ samodzielnie przed zaj¦ciami; jedynie pojedyncze zadania z tej cz¦±ci b¦d¡ rozwi¡zywane podczas ¢wicze«;?. • cz¦±¢ druga: zadania

Oblicz, ile samochodów każdego rodzaju zostało sprzedanych, jeżeli Opli Corsa sprzedano 510 sztuk.

U – Zaznaczają kolorem punkty odpowiadające liczbom dwucyfrowym o jednakowych cyfrach.. N – Poleca odnaleźć i wypisać liczby dwucyfrowe, których cyfra jedności jest dwa

Jaka jest szansa, że wśród 10 losowo wybranych pączków znajdzie się przynajmniej 8 pączkow

Wypisz i zaznacz na osi wszystkie liczby jakie można zakodowad na 4 bitach w formacie zmiennopozycyjnym, gdy najstarszy bit jest bitem znaku, dwa następne bity

UNICODE to światowy standard służący do kodowania znaków, przy czym Unicode definiuje jedynie zestaw znaków, a nie sposób jego kodowania.. Unicode jest zgodny