background image

 

 

Stało- i zmiennopozycyjna 

reprezentacja liczb 

binarnych

background image

 

 

Zapis stałoprzecinkowy

Aby umożliwić również zapis liczb ułamkowych, 

musimy rozszerzyć wagi pozycji w stronę 
ujemnych potęg podstawy. Część ułamkową 
oddzielimy od części całkowitej zapisu za 
pomocą znaku przecinka.

waga p

n-1

 … p

2

p

1

p

0

 , p

-1

p

-2

 … p

-m

 cyfry a

n-1

 … a

2

a

1

a

0

 , a

-1

a

-2

 … a

-m

background image

 

 

Wbrew pozorom obliczenie wartości tak 

zapisanej liczby wcale nie jest trudniejsze. 
Zasada nie zmienia się i musimy sumować 
kolejne iloczyny wartości cyfr przez wartości 
wag pozycji. Obliczenia rozpoczynamy od 
pierwszej pozycji po prawej stronie.

a

n-1

...a

2

a

1

a

, a

-1

a

-2

...a

-m

  =  a

-m

p

-m

 + ... + a

-2

p

-

2

 + a

-1

p

-1

 + a

0

p

0

 + a

1

p

1

 + a

2

p

2

 + ... + a

n-1

p

n-

1

W przypadku liczb binarnych p=2.

background image

 

 

Przykład

Obliczyć wartość liczby dwójkowej 11101,011

B

11101,011

B

 = 1 * 2

-3

 + 1 * 2

-2

 + 0 * 2

-1

 + 1 * 2

0

 + 0 * 

2

1

 + 1 * 2

2

 + 1 * 2

3

 + 1 * 2

4

11101,011

B

 = * 1/8 + 1 * 1/4 + 0 * 1/2 + 1 * 1 + 0 * 

2 + 1 * 4 + 1 * 8 + 1 * 16

11101,011

B

  = 1/8 + 1/4 + 1 + 4 + 8 + 16

11101,011

B

 = 29 3/8 

background image

 

 

Zamiana ułamka dziesiętnego na wartość binarną
Metoda zamiany jest dwuetapowa.
Najpierw zamieniana jest część całkowita ułamka. 

Wtedy stosuje się cykliczne dzielenie przez 2 i 

sprawdzanie reszty z dzielenia.

Następnie zamienia się część ułamkową. Zamiana 

polega na cyklicznym mnożeniu ułamka razy 2 i 

sprawdzaniu, czy wynik nie jest większy lub równy 1. 

Jeżeli jest >= 1 to wyznaczony bit części ułamkowej 

jest także równy jeden. Do dalszych obliczeń bierze 

się część ułamkową wyniku.

Czasem zamiana części ułamkowej na postać binarną 

prowadzi do osiągnięcia nieskończenie długiej 

kombinacji zer i jedynek. Dlatego zawsze należy 

przyjąć dodatkowy warunek - ile bitów jest 

przeznaczone na zapis części ułamkowej. Obliczenia 

wykonuje się wtedy dotąd, aż osiągnie się potrzebną 

liczbę bitów 

background image

 

 

Przykład
Zamienić ułamek 12.7 na postać binarną 8-bitową, 

gdzie przecinek jest po czterech bitach (4b,4b).

Etap 1
Część całkowita 12

D

 to w postaci dwójkowej 1100

B

.

Etap 2
Obliczanie części ułamkowej wygląda następująco:
0.7 * 2 = 1.4 -> 1
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
0.2 * 2 = ….. – tutaj przerywamy obliczenia
i stąd 12.7

D

 = 1100,1011

B

background image

 

 

Zapis zmiennopozycyjny

Z zapisem zmiennoprzecinkowym można 

spotkać się w przypadkach, gdzie przy jego 
pomocy przedstawia się albo bardzo duże 
wartości, albo bardzo małe. Zapis ten nazywa 
się często notacją naukową, np.:

Gwiazda Proxima Centauri znajduje się w 

odległości 9460800000000 [km], czyli 
9,4608 * 10

12

.

Masa elektronu wynosi m

e

 = 

0,00000000000000000000000000091095 
[g], czyli  9,1095 x 10

-28

 [g] 

background image

 

 

Liczba zapisana w systemie 

zmiennoprzecinkowym składa się z dwóch 
części: liczby stałoprzecinkowej, której 
wartość bezwzględna jest mniejsza od 
wartości podstawy systemu pozycyjnego oraz 
z podstawy podniesionej do pewnej potęgi 
zwanej wykładnikiem lub cechą. Wartość 
liczby jest równa iloczynowi części 
stałoprzecinkowej i wykładniczej:

w = m * p

e

,

m - mantysa, p - podstawa systemu, e - 

wykładnik potęgowy.

background image

 

 

Obliczanie wartości dwójkowej liczby 

zmiennoprzecinkowej

Przyjmijmy następujące ustalenia. Dwójkowa liczba 

zmiennoprzecinkowa zbudowana jest z dwóch 

części: z mantysy m i wykładnika  potęgowego e 

(zwanego również cechą). Ponieważ podstawa 

systemu liczenia jest znana i wynosi 2, więc nie 

ma potrzeby umieszczać jej w zapisie liczby. 

Mantysa m jest liczbą stałoprzecinkową na moduł 

mniejszą od 1. Wykładnik e jest liczbą całkowitą. 

Obie części mogą być zapisane np. w kodzie U2 

lub kodzie ZM.

wykładnik 

e

mantysa 

m

n-bitów

m-bitów

 liczba 

zmiennoprzecinkowa 

background image

 

 

Wartość liczby liczymy wg wzoru:

w = m * 2

e

Obliczenia
Niech wykładnik zbudowany będzie z n bitów

Ponieważ jest to liczba całkowita, więc jej wartość 
obliczamy w poznany wcześniej sposób:                
    

n-2

e = a

n-1

a

n-2

a

n-3

...a

2

a

1

a

0

 = a

n-1

(-2

n-1

) + 

 a

i

2

i

        

i=0

czyli zgodny z zapisem dla liczb w kodzie U2

background image

 

 

Mantysa ma być ułamkiem mniejszym na moduł od 1. 

Jeśli jest zbudowana z m bitów, to waga najstarszego 
bitu wynosi w kodzie U2 -2

0

, czyli -1. Następna pozycja 

ma wagę 2

-1

, czyli 1/2, itd. Rozpiszmy to następująco:

m = a

n-1

 , a

n-2

a

n-3

...a

2

c

1

a

0

 = a

n-1

(-2

0

) + a

n-2

2

-1

 + a

n-3

2

-2

 + 

... + a

2

2

-n+3

 + a

1

2

-n+2

 + a

0

2

-n+1

Dla przykładowej, 4-bitowej mantysy wzór ten przyjmie 

następującą postać:

m = a

3

 , a

2

a

1

a

0

 = a

3

(-2

0

) + a

2

2

-1

 + a

1

2

-2

 + a

0

2

-3

m = a

3

 , a

2

a

1

a

0

 = a

3

 * -1 + a

2

 * 1/2 + a

1

 * 1/4 + a

0

 * 

1/8
m = a

3

 , a

2

a

1

a

0

 = - a

3

 + a

2

 / 2 + a

1

 / 4 + a

0

 / 8

background image

 

 

Przykład – liczba 8-bitowa, po 4 bity na mantysę i 

wykładnik

00110111

ZP

 = ...? 

D

Najpierw wydobywamy z liczby wykładnik e i mantysę m:

0011 0111
   e       m

Teraz obliczamy kolejno wartość wykładnika i mantysy:

e = 0011

U2

 = 0 * (-8) + 0 * 4 + 1 * 2 + 1 * 1

e = 0011

U2

 =  2 + 1

e = 0011

U2

 =  3

D

m = 0,111

U2

 = - 0 + 1/2 + 1/4 + 1/8

m = 0,111

U2

 = 1/2 + 1/4 + 1/8

m = 0,111

U2

 = 4/8 + 2/8 + 1/8

m = 0,111

U2

 = 7/8

Mając e i m, podstawiamy do wzoru i otrzymujemy

00110111

ZP

 = 7

D

background image

 

 

Obliczanie reprezentacji zmiennoprzecinkowej
Mamy określony format zapisu liczby 

zmiennoprzecinkowej w systemie dwójkowym. 

Wiemy, że wykładnik ma zawierać n - bitów w 

kodzie U2, a cecha m bitów w zapisie 

stałoprzecinkowym U2.

Przykład prostego systemu zmiennoprzecinkowego, w 

którym wykładnik i cecha mają po 4 bity długości. 

Przykładową liczbą niech będzie wartość 56:

56

D

 = 111000

B

 = 0111000

U2

 - dodajemy zero, aby 

zaznaczyć, iż jest to liczba dodatnia.

Zapiszemy wzór obliczeniowy, a następnie będziemy 

przesuwać w prawo cyfry mantysy dodając 

jednocześnie 1 do wykładnika, aż znacząca jedynka 

znajdzie się na pozycji o wadze 1/2. 

background image

 

 

0111000,000

U2

 =2

0000U2

  011100,000

U2

 =2

0001U2

 - przesuwamy cyfry mantysy 

w prawo, zwiększamy wykładnik

    01110,000

U2

 =2

0010U2

      0111,000

U2

 =2

0011U2

        011,100

U2

 =2

0100U2

          01,110

U2

 =2

0101U2

            0,111

U2

 =2

0110U2

 - kończymy, mantysa jest 

znormalizowana

Otrzymujemy więc:

e = 0110  = 6

D

m = 0,111 = 7/8, sprawdzamy: 7/8 x 2

6

 = 448/8 = 

56

background image

 

 

Dla liczby 9

D

9

D

 = 1001

B

 = 01001

U2

01001,000

U2

 =2

0000U2

  0100,100

U2

 =2

0001U2

    010,010

U2

 =2

0010U2

      01,001

U2

 =2

0011U2

 - ostatnia jedynka zaraz zniknie!!! 

        0,100

U2

 =2

0100U2

 - koniec

Otrzymaliśmy wynik:

e = 0100  = 4

D

m = 0,100 = 1/2, sprawdzamy: 1/2 * 2

4

 = 16/2 = 8

9

D

 =? 01000100

ZP


Document Outline