Kodowanie liczb

background image

1

Kodowanie liczb

Kodowanie stałopozycyjne liczb całkowitych

Niech liczba całkowita a ma w systemie dwójkowym postać:

.

...

2

0

1

1

a

a

a

a

a

n

n

Wtedy może być ona przedstawiona w postaci (n+2)-bitowej przy pomocy trzech niżej

zdefiniowanych kodów.

Kod prosty

jest

liczby

znakiem

gdy

,

....

1

jest

liczby

znakiem

gdy

,

....

0

]

[

0

1

1

0

1

1

a

a

a

a

a

a

a

a

a

n

n

n

n

pr

Kod odwrotny, 1-kod, kod uzupełniony do 1

,

jest

liczby

znakiem

gdy

,

....

1

jest

liczby

znakiem

gdy

,

....

0

]

[

0

1

1

0

1

1

a

a

a

a

a

a

a

a

a

n

n

n

n

pr

gdzie

i

i

a

a

1

dla

.

,

...

,

1

,

0

n

i

Kod dopełnieniowy, 2-kod, kod uzupełniony do 2



,

jest

liczby

znakiem

gdy

,

01

...

0

....

1

jest

liczby

znakiem

gdy

,

....

0

]

[

razy

1

0

1

1

0

1

1

n

n

n

n

n

odw

a

a

a

a

a

a

a

a

a

gdzie

i

i

a

a

1

dla

.

,

...

,

1

,

0

n

i

Uwaga.

Liczba 0 w kodzie prostym i kodzie odwrotnym jest kodowana jako

0

lub

;

0

w systemie

dopełnieniowym jest ona kodowana tylko jako

.

0

Przykłady.

Zakodujemy podane liczby całkowite przy pomocy 7 bitów.

a)

.

11001

2

a

Mamy

,

011001

2

a

skąd

 

 

 

0011001

dop

odw

pr

a

a

a

b)

.

11001

2

a

Mamy

,

011001

2

a

skąd

 

 

1100111

0000001

1100110

]

[

;

1100110

;

1011001

dop

odw

pr

a

a

a

c)

.

111111

2

a

Wtedy

;

1111111

]

[

pr

a

;

1000000

]

[

odw

a

.

1000001

0000001

1000000

]

[

dop

a

background image

2

d)

.

0

2

a

Jeżeli przyjmiemy, że

,

000000

2

a

to

 

 

 

.

0000000

dop

odw

pr

a

a

a

W kodzie prostym i w kodzie odwrotnym można założyć, że

,

000000

2

a

i wtedy

 

;

1000000

pr

a

 

.

1111111

odw

a

Przykłady

Rozkodujemy przykładowe liczby, tzn. znajdziemy ich reprezentacje dwójkowe na podstawie wartości

ich kodów 7-bitowych.

a)

 

.

1101

001101

0001101

2

2

a

dop

odw

pr

kod

a

kod

b)

 

.

1

|

110111

kod

a

;

101111

2

a

pr

kod

;

10000

010000

2

a

odw

kod

 

.

10001

010001

1101110

0000001

1101111

2

2

a

a

dop

kod

odw

c)

 

100

|

1010

kod

a

;

10100

2

a

pr

kod

;

101011

0101011

2

2

a

odw

kod

 

.

101100

1010011

0000001

1010100

2

a

a

dop

kod

odw

d)

 

1000000

kod

a

;

0

00000

2

2

a

pr

kod

;

111111

2

a

odw

kod

 

2

111111

0111111

0000001

1000000

a

a

dop

kod

odw

sprzeczność, bo

.

0111111

111111

dop

A więc zgodnie z przyjętym określeniem kodu dopełnieniowego równość nie jest możliwa!. Dlatego

na podstawie dodatkowej umowy przyjmuje się, że

.

1000000

1000000

2

dop

Kodowanie stałopozycyjne a dodawanie i odejmowanie liczb

całkowitych

Dodawanie

Przypadek kodu odwrotnego

Prześledzimy zagadnienie na reprezentatywnych przykładach liczb kodowanych przy pomocy

8 bitów.

Przykłady

a)

1

0

1

1

0

0

1

0

1

0

1

1

0

0

1

0

0

0

0

0

1

0

1

0

1

1

0

1

0

2

2

2

odw

b

a

b

a

b

a

 

 

 

 

1

0

1

1

0

0

1

0

0

0

0

0

0

1

0

0

1

0

1

1

0

1

0

0

odw

odw

odw

odw

b

a

b

a

background image

3

b)

1

1

0

0

1

0

0

0

1

1

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

1

0

1

1

2

2

2

odw

b

a

b

a

b

a

 

 

1

1

0

0

1

0

0

0

1

0

1

0

0

1

0

0

0

1

1

0

1

0

0

1

0

1

1

0

1

1

0

1

1

0

odw

odw

b

a

c)

0

0

1

1

0

1

1

1

1

1

0

0

1

0

0

1

0

1

1

0

1

1

0

1

0

1

1

0

1

2

2

2

odw

b

a

b

a

b

a

 

 

 

 

0

0

1

1

0

1

1

1

0

1

0

0

1

0

0

1

0

1

0

1

1

0

1

0

odw

odw

odw

odw

b

a

b

a

d)

0

1

0

0

1

1

0

1

1

0

1

1

0

0

1

0

0

0

0

0

1

0

1

0

1

1

0

1

0

2

2

2

odw

b

a

b

a

b

a

 

 

0

1

0

0

1

1

0

1

1

1

0

0

0

1

1

0

1

1

1

1

1

1

1

0

1

1

0

1

0

0

1

0

1

1

odw

odw

b

a

Wniosek.

Aby otrzymać kod odwrotny sumy dwóch liczb, należy dodać ich kody odwrotne i w

przypadku powstania bitu przepełnienia sumę tę powiększyć o 1.

Przypadek kodu dopełnieniowego

Prześledzimy zagadnienie na reprezentatywnych przykładach liczb kodowanych przy pomocy

8 bitów.

Przykłady

a)

1

0

1

1

0

0

1

0

1

0

1

1

0

0

1

0

0

0

0

0

1

0

1

0

1

1

0

1

0

2

2

2

dop

b

a

b

a

b

a

 

 

 

 

1

0

1

1

0

0

1

0

0

0

0

0

0

1

0

0

1

0

1

1

0

1

0

0

dop

dop

dop

dop

b

a

b

a

b)

1

1

0

0

1

0

0

0

1

1

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

1

0

1

1

2

2

2

dop

b

a

b

a

b

a

 

 

1

1

0

0

1

0

0

0

1

1

0

0

1

0

0

0

1

0

1

1

0

0

1

0

1

1

0

1

1

0

1

1

0

dop

dop

b

a

+

+

odrzucić!

background image

4

c)

1

0

1

1

0

1

1

1

1

1

0

0

1

0

0

1

0

1

1

0

1

1

0

1

0

1

1

0

1

2

2

2

dop

b

a

b

a

b

a

 

 

 

 

1

0

1

1

0

1

1

1

1

1

0

0

1

0

0

1

0

1

0

1

1

0

1

0

dop

dop

dop

dop

b

a

b

a

d)

1

1

0

0

1

1

0

1

1

0

1

1

0

0

1

0

0

0

0

0

1

0

1

0

1

1

0

1

0

2

2

2

dop

b

a

b

a

b

a

 

 

1

1

0

0

1

1

0

1

1

1

0

0

1

1

0

1

1

0

0

0

0

0

1

1

1

1

1

0

0

1

0

1

1

dop

dop

b

a

Wniosek.

Aby otrzymać kod dopełnieniowy sumy dwóch liczb, należy dodać ich kody dopełnieniowe

i ewentualny bit przepełnienia odrzucić.

Odejmowanie

Z uwagi na równość

)

( b

a

b

a

odejmowanie może być zastąpione dodawaniem liczby a i liczby przeciwnej do liczby b.

Dlatego powstaje problem uzyskiwania kodu liczby przeciwnej z kodu liczby danej. Prześle-

dzimy zagadnienie na reprezentatywnych przykładach liczb kodowanych przy pomocy 8

bitów.

Przypadek kodu odwrotnego

Przykłady

a)

 

 

1

2

2

0101101

1010010

101101

0101101

101101

dop

odw

odw

a

a

a

a

b)

 

 

1

2

2

0010010

1101101

010010

0010010

010010

dop

odw

odw

a

a

a

a

c)

 

 

1

2

2

1011000

0100111

100111

1011000

100111

dop

odw

odw

a

a

a

a

d)

 

 

1

2

2

1100111

0011000

011000

1100111

011000

dop

odw

odw

a

a

a

a

odrzucić!

background image

5

Wniosek.

Aby otrzymać kod odwrotny liczby przeciwnej należy obliczyć tzw. dopełnienie do 1 kodu liczby

danej.

Przykłady

Oto przykłady operacji, o której mowa w ostatnim wniosku.

a)

;

1100111

0011000

1

dop

b)

.

0111111

1000000

1

dop

Przypadek kodu dopełnieniowego

Przykłady

a)

 

 

2

2

2

1

|

010110

1010011

101101

0101101

101101

dop

dop

dop

a

a

a

a

b)

 

 

2

2

2

10

|

00100

1101110

010010

0010010

010010

dop

dop

dop

a

a

a

a

c)

 

 

2

2

2

1

|

101100

0100111

100111

1011001

100111

dop

dop

dop

a

a

a

a

d)

 

 

2

2

2

1000

|

110

0011000

011000

1101000

011000

dop

dop

dop

a

a

a

a

Wniosek.

Aby otrzymać kod dopełnieniowy liczby przeciwnej należy obliczyć tzw. dopełnienie do 2 kodu

liczby danej.

Przykłady

Oto przykłady operacji, o której mowa w ostatnim wniosku.

a)

1101000

1000

|

001

1

dop

Inna metoda:

0

0

0

1

0

1

1

1

1

1

1

0

0

1

1

background image

6

b)

0101001

1

|

101011

2

dop

Inna metoda:

1

0

0

1

0

1

0

1

0

0

0

1

0

1

0

c)

1000000

1000000

|

2

dop

Inna metoda:

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

Otrzymaliśmy sprzeczność, bo liczba przeciwna do liczby o rozważanym kodzie jest poza zakresem!

Ćwiczenie.

Wykonać poniższe dodawanie i odejmowanie przy pomocy kodu odwrotnego i kodu

dopełnieniowego argumentów tych operacji. Sprawdzić otrzymane wyniki przy pomocy tradycyjnego

dodawania i tradycyjnego odejmowania.

a)

 

.

0101011

1001110

2

2

s

Kod odwrotny

10110001

1001110

2

odw

11010100

0101011

2

odw

.

1111001

0

1

1

0

0

0

0

1

1

1

0

1

0

0

0

0

1

0

0

1

0

1

0

1

1

1

0

0

0

1

1

0

1

2



s

1

Kod dopełnieniowy

10110010

1001110

2

dop

11010101

0101011

2

dop

.

1111001

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

0

0

1

1

0

1

2



s

1

Sprawdzenie

2

2

2

1

0

0

1

1

1

1

1

1

0

1

0

1

0

0

1

1

1

0

0

1

Odrzucić!

+

background image

7

b)

 

.

0101100

1110001

2

2

r

Kod odwrotny

10001110

1110001

2

odw

00101100

11010011

11010011

0101100

1

2

dop

odw

.

1000101

0

1

0

1

1

1

0

1

0

0

1

1

0

1

0

0

0

1

1

1

0

0

0

1

2

r

Kod dopełnieniowy

10001111

1110001

2

dop

00101100

11010100

11010100

0101100

2

2

dop

dop

.

1000101

1

1

0

1

1

1

0

1

0

0

1

1

0

1

0

0

1

1

1

1

0

0

0

1

2

r

Sprawdzenie

2

2

2

1

0

1

0

0

0

1

0

0

1

1

0

1

0

1

0

0

0

1

1

1

Kodowanie dwójkowo-dziesiętne

Istota tego systemu polega na kodowaniu przy pomocy 4 bitów każdej cyfry zapisu dziesięt-

nego liczby. Można stworzyć wiele systemów tego typu, ale w praktyce stosuje się kod BCD (Binary

Coded Decimal) zwany także kodem 8-4-2-1, kod Aikena zwany także kodem 2-4-2-1 i kod z nad-

miarem 3, oznaczany dalej symbolem +3.

Oto definicja tych systemów:

Cyfra

dziesiętna

Kod 8-4-2-1

Kod 2-4-2-1

Kod +3

0

0000

0000

0011

1

0001

0001

0100

2

0010

0010

0101

3

0011

0011

0110

4

0100

0100

0111

5

0101

1011

1000

6

0110

1100

1001

7

0111

1101

1010

8

1000

1110

1011

9

1001

1111

1100

Przykład

;

0000

|

0111

|

1001

|

1000

|

0001

18970

1

2

4

8

;

0000

|

1101

|

1111

|

1110

|

0001

18970

1

2

4

2

.

0011

|

1010

|

1100

|

1011

|

0100

18970

3

background image

8

Ćwiczenie

Zakodować przy pomocy 16 bitów poniższe liczby dziesiętne:

a)

.

7925

Rozwiązanie.

;

0101

|

0010

|

1001

|

0111

7925

1

2

4

8

;

1011

|

0010

|

1111

|

1101

7925

1

2

4

2

.

1000

|

0101

|

1100

|

1010

7925

3

b)

.

0348

348

Rozwiązanie.

;

1000

|

0100

|

0011

|

0000

0348

1

2

4

8

;

1110

|

0100

|

0011

|

0000

0348

1

2

4

2

.

1011

|

0111

|

0110

|

0011

0348

3

Ćwiczenie

Rozkodować liczby dziesiętne zakodowane przy pomocy 16 bitów:

a)

 

.

1011

|

1100

|

0100

|

0011

kod

x

Rozwiązanie.

ć!

sprzecznoś

)

11

)(

12

(

34

"

1

2

4

8

"

x

kod

3465

"

1

2

4

2

"

x

kod

.

0198

"

3

"

x

kod

b)

 

.

0011

|

1000

|

0111

|

1001

kod

x

Rozwiązanie.

9783

"

1

2

4

8

"

x

kod

ć!

sprzecznoś

3723

"

1

2

4

2

"

x

kod

.

6450

"

3

"

x

kod

Kodowanie zmiennopozycyjne liczb rzeczywistych

Jeżeli ustalona jest podstawa systemu liczbowego

,

2

p

to każda liczba rzeczywista a może

być zapisana przy pomocy tzw. notacji naukowej w postaci:

,

c

p

m

a

gdzie współczynnik m nazywa się mantysą, a wykładnik c będący liczbą całkowitą – cechą liczby a.

Zakładać będziemy, że część ułamkowa mantysy ma rozwinięcie skończone, co oznacza, że opisana

reprezentacja niekiedy przedstawia liczbą a w sposób przybliżony.

Ponieważ notacja naukowa nie jest jednoznaczna, więc w przypadku, gdy

,

0

a

częstą

stosuje się tzw. notację znormalizowaną polegającą na tym, że m oraz c są tak dobrane,

aby

,

..

.

0

2

1

p

k

m

m

m

m

przy czym

.

0

1

m

Gwarantuje to zachodzenie nierówności

.

1

1

m

p

Innym stosowanym warunkiem normalizacyjnym jest przedstawianie m w postaci

,

..

.

1

2

1

p

k

m

m

m

m

tak, aby zachodziła nierówność

.

1

p

m

background image

9

Opisane niżej systemy kodowania liczb rzeczywistych zwane reprezentacjami

zmiennoprzecinkowymi w sposób istotny wykorzystują opisane notacje naukowe.

Standard IBM.

Występuje tu tzw. reprezentacja krótka 32-bitowa i reprezentacja długa 64-bitowa. Jeżeli kodowana

liczba rzeczywista a nie jest zerem, to daje się ona przedstawić w postaci

,

)

.

0

(

16

)

1

(

2

64

M

a

C

S

gdzie parametr S równy 0 lub 1 określa znak liczby a, parametr C nazywa się charakterystyką a

parametr M jest częścią ułamkową wyrażonej w systemie dwójkowym mantysy liczby a. Jeżeli C

zostanie przedstawione w systemie dwójkowym przy pomocy 7 bitów, to liczba a jest kodowana w na-

stępujący sposób:

Reprezentacja krótka:

31

8

7

1

0

Reprezentacja długa:

63

8

7

1

0

Przykłady

Rozkodujemy liczby zmiennoprzecinkowe zakodowane w standardzie IBM.
a)

 

.

5

.

15

2

29

32

29

16

32

1

8

1

4

1

2

1

16

)

1

(

0

...

111010

|

1000001

|

0

64

65

0

IBM

a

b)

 

.

0390625

.

0

128

5

8

5

16

1

8

1

2

1

16

)

1

(

0

...

10100

|

0111111

|

1

64

63

1

 

IBM

a

Przykłady

Zakodujemy liczbę w standardzie IBM.

a)

,

111

.

0

16

)

1

(

875

.

0

16

16

917504

16

917504

2

64

69

1

5

5

5

a

gdyż

0

5

7

.

1

2

5

7

8

.

0

0

5

.

1

2

5

7

.

0

0

.

1

2

5

.

0

Ponadto

2

0

1

2

3

4

5

6

1000101

2

1

2

0

2

1

2

0

2

0

2

0

2

1

1

4

64

69

i dlatego

 

0

...

1110

|

1000101

|

1

IBM

a

b)

2

64

0

0

...

0

.

0

16

0

a

i dlatego

 

0

...

00

|

000000

|

0

IBM

a

S

C

M

background image

10

Standard IEEE

Tu również występuje reprezentacja krótka 32-bitowa i reprezentacja długa 64-bitowa. Na potrzeby

tej pierwszej przedstawiamy liczbę

0

a

w postaci

 

2

127

.

1

2

)

1

(

F

a

E

S

(symbole E oraz F oznaczają pewne liczby naturalne a nie cyfry sytemu pozycyjnego) i definiujemy

reprezentację w następujący sposób zakładając, że E jest wyrażone w systemie dwójkowym:

31

9

8

1

0

W przypadku reprezentacji długiej punktem wyjścia jest przedstawienie

 

2

1023

.

1

2

)

1

(

F

a

E

S

a kod ma postać

63

12

11

1

0

Przykłady. Rozkodujemy liczby zmiennoprzecinkowe zakodowane w systemie krótkim IEEE.

a)

 

.

1

0

.

1

2

)

1

(

0000

0000

0000

0000

0000

000

|

1

1111

011

|

0

800000

3

2

127

127

0

16

F

a

IEEE

b)

 

.

1

0

.

1

2

)

1

(

0000

0000

0000

0000

0000

000

|

1

1111

011

|

1

800000

127

127

1

16

BF

a

IEEE

c)

 

2

127

128

0

16

1001

.

1

2

)

1

(

0000

0000

0000

0000

1000

100

|

0

0000

100

|

0

40480000

IEEE

a

.

125

.

3

8

1

3

001

.

11

2

Przykład. Zakodujemy liczbę

25

.

30

a

w krótkim systemie IEEE. Mamy

2

2

1

0

1

2

3

4

01

.

11110

2

1

2

0

2

0

2

1

2

1

2

1

2

1

25

.

30

a

,

111001

.

1

2

)

1

(

111001

.

1

2

2

127

131

1

4

oraz

.

10000011

2

1

2

1

2

0

2

0

2

0

2

0

2

0

2

1

1

2

128

131

2

0

1

2

3

4

5

6

7

Stąd

 

.

20000

1

0

...

00

|

0010

|

1111

|

0001

|

1100

16

F

C

a

IEEE

Przykład. Rozkodujemy liczbę zmiennoprzecinkową a zakodowaną w systemie długim IEEE.

Niech

 

.

0

...

0000

1110

|

0011

0000

100

|

1

0

...

0

03

16

12

razy

IEEE

E

C

a

Stąd

.

30

)

2

4

8

16

(

11110

111

.

1

2

111

.

1

2

)

1

(

2

2

4

2

1023

1027

1

a

S

E

F

S

S

E

F

S

background image

11

Przykład. Zakodujemy liczbę

625

.

7

a

w długim kodzie IEEE.

Mamy

2

101

.

111

8

1

2

1

1

2

4

8

1

4

8

16

32

8

61

8

5

7

40

25

7

1000

625

7

a

,

2

1023

1025

0

2

2

11101

.

1

2

)

1

(

11101

.

1

2

przy czym

.

0001

0000

100

1

1024

1025

2

Stąd

 

.

0000

0000

8000

401

0

...

0

|

1000

|

1110

|

0001

|

0000

|

0100

16

E

a

IEEE

Uwaga. W przypadku standardu IEEE, zarówno krótkiego jak i długiego, następujące przypadki

szczególne wymagają wyjaśnienia.

a) Jeżeli

0

...

0

E

oraz

,

0

...

0

F

to a jest najmniejszą liczbą, co do wartości bezwzględnej, którą

można w danym systemie zakodować i dlatego przyjmuje się w zależności od tego, czy bit S jest

zerem, czy jedynką, że jest to reprezentacja 0

albo 0

.

b) Jeżeli

1

...

1

E

oraz

,

0

...

0

F

to czynnik

127

2

E

albo

1023

2

E

osiąga największą możliwą

wartość i dlatego przyjmuje się w zależności od tego, czy bit S jest zerem, czy jedynką, że jest to

reprezentacja

albo

.


Wyszukiwarka

Podobne podstrony:
KODOWANIE LICZB
Kodowanie liczb i tekstu
KODOWANIE LICZB
Kodowanie liczb
Kodowanie liczb 3
kodowanie liczb calkowitych
KODOWANIE LICZB
Kodowanie liczb i tekstu
KODOWANIE LICZB
Binarne Kodowanie Liczb Naturalny system dwójkowy
KODOWANIE LICZB
10 Reprezentacja liczb w systemie komputerowymid 11082 ppt
Wykład 6 6 kodowanie mowy
Kodowanie informacji

więcej podobnych podstron