Egészek bináris ábrázolása

Kezdjük a pozitív egészekkel, bár ez egy meglehetősen ritka módja a számábrázolásnak, de azért előfordul egyes operációs rendszerekben, illetve programozási nyelvekben. A legtöbb számábrázolási módszerrel ellentétben itt nincsen előjelbit (mivel a pozitívon nincs mit ábrázolni), csak pusztán a szám. Pl. az 1 bájtos számokban a következő a megoldás:

Bit

7

6

5

4

3

2

1

0

Jegy

1

0

1

0

1

0

1

0

Tehát a teljes szám: 101010102, ami átváltva 17010-nel felel meg. A helyzet ugyanez lesz, ha 1 bájt helyett 2 bájtnyi lesz a bináris szám. Nézzük most a következő számot:

EC3D16 = 1110.1100.0011.11012 = 6047710

A teljes szám ábrázolása most így néz ki:

Hexa

E

C

3

D

Bit

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Jegy

1

1

1

0

1

1

0

0

0

0

1

1

1

1

0

1

 

Most térjünk át az előjeles egészekre! Itt a legelső bitet az előjel foglalja le, ami általában 0, ha a szám pozitív, míg 1, ha a szám negatív. Itt is kezdjük az 1 bájtos számokkal! A példa: +110.01102.

Bit

EJ

6

5

4

3

2

1

0

Jegy

0

1

1

0

0

1

1

0

(EJ = előjelbit)

Tehát így a legnagyobb ábrázolható pozitív szám: +111.11112. Ezt átváltva a 12710-et kapjuk.

1 bájton ábrázolt negatív számok esetén ábrázoljuk a -6110-et:

Bit

EJ

6

5

4

3

2

1

0

Jegy

1

0

1

1

1

1

0

1

Tehát a bináris megfelelője: -11.11012. A 6-os biten lévő 0-t nem szokás leírni, mivel a számok (leírt formátumban) nem kezdődnek 0-val.

Így a legkisebb ábrázolható egész szám: -111.11112 lesz, ami -12710-nek felel meg.

Két bájton a módszer hasonló, csak itt a legelső bit lesz az előjel.

Bit

EJ

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Jegy

0

1

1

0

1

1

0

0

1

0

0

1

0

1

0

1

Ez a szám a következő lesz: +110.1100.1001.01012. Átváltás után: 6C9516, ami 2779710-nek felel meg. A legnagyobb ábrázolható egész szám: +111.1111.1111.11112 = 7FFF16 = 3276710.

A legkisebb pedig a következő: -111.1111.1111.11112 = - 7FFF16 = - 3276710.

Ebben a módszerben egyetlen gond az, hogy 2 db 0 van, mégpedig egy pozitív és egy negatív 0, ez pedig komoly gondot szokott okozni.

 

Ezért jön a következő módszer, a komplemens kódú ábrázolás. A módszer matematikai alapja az, hogy ha egy tetszőleges hosszú bináris számot összeadunk kettes komplemensével, akkor az összegként kapott szám minden jegye 1 lesz.

a

1

0

1

1

0

1

0

1

Komp a

0

1

0

0

1

0

1

0

Összeg

1

1

1

1

1

1

1

1

Így az összeg 28-1 lesz. Tehát egy szám komplemensét megkaphatjuk úgy is, hogy a számot kivonjuk a 28-1-ből. A kettes komplemens kódban ábrázolt bináris szám legnagyobb helyiértékű bitjét (az előjelbitet) negatívnak kell tekinteni. Egy bináris szám kettes komplemensét úgy képezhetjük legegyszerűbben, hogy a szám inverzéhez hozzáadunk 1-et. Ilyen módszerrel viszont igen könnyű lesz a számítás. Vegyünk erre egy példát!

Bit

7

6

5

4

3

2

1

0

Hatvány

27

26

25

24

23

22

21

20

n = 8

0

0

0

0

1

0

0

0

N = -9

0

0

0

0

1

0

0

1

N inverze

1

1

1

1

0

1

1

0

Érték

-27

+26

+25

+24

0

+22

+21

0

Összegezve: -27+26+25+24+22+21 = -128+64+32+16+4+2+1 = -128 +119 = -9

Tehát a komplemens módú ábrázolásnál megszűnik a két db nulla, viszont az értékek visszaszámítása a hagyományos tízes számrendszerbe kicsit bonyolultabb lesz. Az ábrázolható értékek is a következők lesznek (1 bájton): -128 <= x <= +127.