kodowanie int

background image

Reprezentacja liczb całkowitych w komputerze.

Do przechowywania i przetwarzania liczb w komputerze używany jest system binarny.
8-bitowe słowo mogłoby reprezentowad liczbę całkowitą z przedziału <0;255>.
n-bitowy ciąg: a

n-1

a

n-2

…a

1

a

0

jest interpretowany jako liczba całkowita bez znaku o wartości A

obliczanej wg wzoru:


Np. ciąg binarny 10101010:

2

7

2

6

2

5

2

4

2

3

2

2

2

1

2

0

1 0 1 0 1 0 1 0
Reprezentuje liczbę o wartości:

128 + 0 + 32 + 0 + 8 + 0 + 2 + 0 = 170

Taki sposób reprezentacji nie pozwala na zapis liczb ujemnych. Istnieją cztery sposoby reprezentacji
liczb całkowitych niedodatnich:

Reprezentacja znak-moduł (signed magnitude)

Najbardziej znaczący bit - znak liczby:
0 – liczba dodatnia,
1 – liczba ujemna
Pozostałe bity – wartośd bezwzględna liczby

Np. dla kodu 8-bitowego:

kod znak-moduł(5) = 00000101
kod znak-moduł(-5)= 10000101

Kod uzupełnienia do 1 (U1)

Liczba przeciwna (zmiana znaku) – zanegowane wszystkie bity (uzupełnienie do 1)

Np. dla kodu 8-bitowego:
kodU1(5) = 00000101
kodU1(-5)= 11111010

Kod uzupełnienia do 2 (U2)

Dla n-bitowej liczby ujemnej (–a) jej kod wynosi 2

n

- a

Praktyczny sposób kodowania liczby ujemnej polega na zanegowaniu wszystkich bitów i
dodaniu wartości „1”. Wynika to z następujących równości:

a + ~a= 2

n

-1 - dodając liczbę binarną a o n cyfrach i liczbę uzyskaną poprzez

zanegowanie każdego z jej bitów uzyskujemy na każdej z n pozycji wartośd
„1” , czyli liczbę 2

n

-1

1

0

2

n

=

i

i

i

a

=

A

background image

2

n

-a= ~a + 1

- oznacza to, że aby uzyskad kod liczby ujemnej (2

n

-a), należy zanegowad

każdy bit liczby a i dodad „1”


kod U2 (a)= a ;

a>=0

kod U2 (a)= ~a + 1;

a<0


Np. dla kodu 8-bitowego:
kodU2(5) = 00000101
kodU2(-5)= 11111011

Dla liczby a będącej ciągiem cyfr binarnych: a

n-1

a

n-2

…a

1

a

0

jej wartośd dziesiętna wyraża się

wzorem:




Przykład:
Rozważmy liczbę binarną liczba=10010011

-2

7

2

6

2

5

2

4

2

3

2

2

2

1

2

0

-128 64 32 16 8 4 2 1
1 0 0 1 0 0 1 1

Liczba=-128+16+2+1=-109

A teraz sprawdzenie: zapiszmy liczbę dziesiętną -109 w kodzie U2:

109

1

54

0

27

1

01101101 -> 10010010 + 1 = 10010011

13

1

6

0

wartośd binarna

3

1

liczby 109

negacja bitowa

1

1

0

0





Uwaga: Inny, praktyczny sposób zakodowania liczby ujemnej polega na tym, że najpierw

kodujemy binarnie wartośd bezwzględną zamienianej liczby, a następnie
przeglądamy uzyskaną liczbę dwójkową od pozycji o najmniejszej wadze, czyli od
prawej strony i do wystąpienia pierwszej jedynki włącznie bity pozostawiamy
niezmienione, następnie zamieniamy na przeciwny każdy kolejny bit.


2

0

1

1

2

2

n

=

i

i

i

n

n

a

+

a

=

a

background image

Przykład:
Zamieomy liczbę -109

1. 109

10

= 01101101

2

2. 0 1 1 0 1 1 0 1

zamiana

pozostaje niezmieniona

1 0 0 1 0 0 1 1

Przykład:

Sprawdzenie co to za liczba: 1111111110011010:

Przeciwnie do zamiany na liczbę ujemną

1111111110011001

(l-1) - odjęcie „1”

0000000001100110

(~l) - negacja

wynik: liczba 102

lub ponowna zamiana 1111111110011010 na liczbę przeciwną:

0000000001100101 (~l) - negacja

0000000001100110

(l+1) – dodanie „1”

lub poprzez zamianę bitów począwszy od ostatniej „1”

………………………..

10

ostatnie 2 bity pozostają bez zmian

0000000011001

10

pozostałe bity zostają zamienione na przeciwne

Kod z nadmiarem 2

n-1

Każda liczba jest „przesunięta do przodu” o pewną stałą nazywaną BIAS (biased exponent

).

Może to byd

wartośd 2

n-1

(n -liczba bitów reprezentacji). Jej kod uzyskuje się przez dodanie

tej wartości i kodowanie binarne.
Mając do dyspozycji 8 bitów można zakodowad binarnie liczby z przedziału <0; 255>,
natomiast korzystając z kodu z nadmiarem 2

n-1

czyli 2

7

= 128 uzyskujemy możliwośd

zakodowania liczb z przedziału <-128; 127>. Ciąg kodowy złożony z samych „0” odpowiada
najmniejszej liczbie z zakresu, czyli wartości -128 (w przypadku 8 bitów i nadmiaru 128),
natomiast kod złożony z samych „1” odpowiada wartości 127.

Np. dla kodu 8-bitowego BIAS 128 wartości liczby 5 i -5 można policzyd w następujący
sposób:
kod z nadmiarem 128 (5) = kod binarny(128+5) = 10000101
kod z nadmiarem 128 (-5) = kod binarny (128-5) = kod binarny(123) = 01111011



background image

Zarówno w reprezentacji znak-moduł, jak i w kodzie U1 występuje podwójna reprezentacja liczby 0.
Problem ten nie występuje w kodzie U2 (próba zamienienia liczby 00000000 na ujemną prowadzi do
uzyskania tego samego kodu: 00000000 -> 11111111 + 1 -> 00000000).


Porównanie reprezentacji liczb całkowitych w 8-bitowych kodach:

Liczba

dziesiętna

Znak-moduł

U1

U2

Nadmiar
128

10

00001010

00001010

00001010

10001010

7

00000111

00000111

00000111

10000111

3

00000011

00000011

00000011

00000011

0

00000000

00000000

00000000

10000000

-0

10000000

01111111

-

-

-3

10000011

11111100

11111101

01111101

-7

10000111

11111000

11111001

01111001

-10

10001010

11110101

11110110

01110110

Konwersja między różnymi długościami bitowymi reprezentacji

Przykład: zapisanie na 16 bitach liczby 8-bitowej

Znak-moduł: przesunięcie bitu znaku na pierwsza pozycję i wypełnienie „0” pozostałych pozycji:

00011010

->

0000000000011010

liczba 26

10011010

->

1000000000011010

liczba -26

Kod U1: wypełnienie bitem znaku dodanych pozycji:

00011010

->

0000000000011010

liczba 26

11100101

->

1111111111100101

liczba -26

Kod U2: wypełnienie bitem znaku dodanych pozycji:

00011010

->

0000000000011010

liczba 26

11100110

->

1111111111100110

liczba -26


Wyszukiwarka

Podobne podstrony:
Wykład 6 6 kodowanie mowy
Kodowanie informacji
Metoda Charlesa Blissa - kopia z int, Fizjoterapia, kinezyterapia
Int
Kodowanie
Kodowanie pytań
kodowanie tekstu
int iors pl
23965 Przewodnik po prawie int Nieznany
Fot wyk3 int
Amstrad IC200 mk2 int sch
POZIOMY KODOWANIA TEMPORALNEGO
Kodowanie zbior pytan wykład
KODOWANIE (metody), Metodologia badań społecznych
Odpowiedzi do testu z Ochr. Włas. Int. ściąga, Ochrona własności intelektualnej
kodowanie sterownikow Audi A4, auta, Diagnostyka dokumety, procedury diagnostyczne

więcej podobnych podstron