Felhasználói eszközök

Eszközök a webhelyen


oktatas:szamitastechnika:szamabrazolas

< Számítástechnika

Számábrázolás

  • Szerző: Sallai András
  • Copyright © 2012, Sallai András
  • Szerkesztve: 2012, 2014, 2015, 2017, 2023
  • Licenc: CC BY-SA 4.0

Osztályozás

A számítógépeken a számokat fixpontos vagy lebegőpontos alakban ábrázoljuk. Volt kísérlet a decimális ábrázolásra is, az végül nem terjed el.

  • Fixpontos
    • előjel nélkül
    • előjeles
      • abszolút értékes
      • kettes komplemens
      • eltolásos (többletes)
  • Lebegőpontos
  • Decimális

Fixpontos számábrázolás

Előjel nélkül

Pl.: 6-ot nyolc helyen ábrázolva:

00000110

Ha nem fér el a szám nyolc helyen túlcsordulás történik. A számok csak nulla vagy pozitívak lehetnek.

Előjeles ábrázolás

Negatív számok is lehetnek

Abszolút értékes

Az első bit mindig az előjel. Rendszerint ha a szám negatív az első bit 1-es. Ha null vagy pozitív szám akkor az első bit 0. Pl. -6 ábrázolása:

10000110

Kettes komplemens

Veszem a szám kettes komplemensét, így ábrázolom. Pl. -6

11111010

Eltolásos

2n-1hozzáadok minden számhoz. Az n mutatja meg, hány helyen ábrázolom a számot. Pl. 8 helyen ábrázolom a 6-ot:

n = 8

2n-1

akkor

27 = 128

(-6) + 128 = 122

122 binárisan

01111010

Lebegőpontos számábrázolás

Egyszerűen

A számot a következő alakban írjuk fel:

m * a^k Tulajdonképpen a számot hatványkitevős alakban írjuk fel.

Röviden ennyi. De nézzük részletesen.

Az „m” a mantissza szóból. Az „a” az alap szóból. A „k” kitevő szóból.

A kitevő helyett szoktak még exponenst is használni.

Angol nyelven a mantissza: mantissa, de szinonimák a significand és a coefficient.

Részletesen

Matematika óráról tudjuk, hogy

1,0000 * 10 = 10,000

Vagyis egyszer tíz az tíz. A szorzás eredménye olyan mintha a bal oldalon álló számnál a tizedesvesszőt egyel jobbra mozdítottam volna. Ugyanígy:

1,0000 * 100 = 100,00

Olyan mintha a szorzás bal oldalán lévő számnál a tizedesvesszőt kettővel jobbra mozdítottam volna.

1,0000 * 1000 = 1000,0

Tehát 10 vagy annak valamelyik hatványával való szorzás műveletét elvégezhetjük a tizedes vessző elmozdításával is.

Most vegyük az utolsó műveletsort. Egyszer ezer az ezer. Ezer felírható tíz és száz szorzataként is:

10,000 * 100 = 1000,0

A szorzás jel baloldalán mindössze a tizedes vessző jobbra kellett mozgatni. De felírható így is:

100,00 * 10 = 1000,0

A tizedesvesszőt még egyel jobbra mozgattuk. A következő is ugyanaz:

1000,0 * 1 = 1000,0

Vegyük észre, hogy a szorzás jel jobboldalán tíz hatványait jelenítjük meg:

  • 1, 10, 100, stb.

mivel:

  • 10^0=1
  • 10^1=10
  • 10^2=100
  • 10^3=1000
  • stb.

Ezek szerint egy számot le tudok írni egy tizedestört és tíz valamelyik hatványával többféleképpen is. Vegyük a következő számot most megismert felírási módban:

3,4 * 10^{1}

A fenti szám szimplán leírva:

34,0

De ugyanezt jelentik a következő alakok is:

  • 340,0 * 10^-1
  • 34,0 * 10^0
  • 0,340 * 10^2
  • 0,0340 * 10^3

Láthatjuk, hogy a vessző ide-oda mozoghat, ha változtatjuk a hatványt. Úgy is mondhatnánk a vessző ide-oda lebeg. Angolszász nyelvterületen a tizedesvessző helyett tizedes pontot használunk. Innen ered a számábrázolás neve: Lebegőpontos számábrázolás.

Az eredeti alakban: 34,0, a tizedesvesszőt nem tehetjük arrébb, mert akkor megváltozik a szám értéke. A tizedesvessző helye mindig fix. Ezért ezt fixpontos számábrázolásnak nevezzük.

A lebegőpontos számok pontossága

Ha valós számokkal dolgozunk a pontosság nem probléma, mivel mondhatjuk végtelen. A számítógépeken a memória viszont véges, így el kell döntenünk mekkora pontossággal dolgozunk. A lebegőpontos számábrázolással kapcsolatos pontosság fogalmát az Intel vezette be. Az Intel ehhez felfogadta William Morton Kahan matematikust a lebegőpontos formátum bináris ábrázolásának kidolgozásához.

Háromféle lebegőpontos formátumot vezetett be:

  • egyszeres - C nyelv float
  • kétszeres - C nyelv double
  • kiterjesztett

Egyszeres pontosság

32 bites

Dupla pontosság

64 bites

Kiterjesztett pontosság

Tudományos alak

A tudományos alak másik neve: exponenciális forma.

A fenti példákból láthatjuk, hogy a szorzás jobb oldalán a hatványozás alapja állandóan tíz, mivel tízes számrendszerben számolunk. Vegyük újra az egyik példát, ábrázoljuk a tízet egy nagy „E” betűvel, de lehet akár kis „e” betű is. Az eredeti szám:

0,340 * 10^2

A szorzásjelet kötelező kitenni, mert nélküle egybeolvad mantissza és a számrendszer alapja. A karakterisztikát felső indexbe kell írni, ahogy a hatványozásnál ezt szoktuk. Ha egy kijelzőn nincs lehetőség a felső index ábrázolására, akkor gond van a megjelenítéssel.

A tíz cseréje egy „E” betűre:

0,340 * E^2

Ekkor elhagyható a szorzás jel és a 2-es felső indexben ábrázolása:

0,340E2

Ekkor megkaptuk a szám tudományos alakját.

A tudományos alak esetén, jelölhetjük a kitevő előjelét például:

0,340E + 2

Természetesen negatív kitevő esetén ez kötelező.

Normalizált alak

Egyes könyvekben „normált” alak.

Láttuk fentebb, hogy lebegőpontos számábrázolással ugyanazt a számot (34) leírhatjuk több alakban is:

  • 0340,0 * 10^-1
  • 034,0 * 10^0
  • 0,340 * 10^2
  • 0,0340 * 10^3

Ha tizedesvessző helyét úgy állítjuk be, hogy mantissza egész része 0 és 1 közötti szám lesz, akkor normalizált alakról beszélünk. Az előbbi szám esetén ez:

  • 0,340 * 10^2

Decimális számábrázolás

A számot számjegyenként kódolom.

  • BCD kódolás
  • zónázott
  • pakolt

BCD kódolás

A BCD kódolás esetén a számokat számjegyenként kódoljuk.

Zónázott kódolás

A számokat számjegyenként külön bájtban tároljuk. A bájt alsó részében tároljuk a számot, a felső részében csupa egyesekkel töltjük fel. Hexadecimálisan ez egy F. A F-et zónajelnek is nevezzük.

Pakolt kódolás

Hasonló a zónázott kódoláshoz, de a számjegyek kódolását félbájtonként végezzük.

Komplemens képzés

A komplemensek képzését bináris számokon értelmezzük.

Legyen a példa kedvéért az ötös szám binárisan:

0101

Ennek egyes komplemense, az ellentétje:

00000101
00001010

Az egyes komplemense: 11111010

A kettes komplemenst úgy képezzük, hogy 1-et adunk az előző eredményhez.

Adjunk 11111010-hoz 1-t:

 11111010
+00000001
_________
 11111011

Öt kettes komplemense tehát: 11111011.

Hol használjuk ezt? A negatív számok ábrázolásánál ezt a formát használjuk. Tehát -5 ábrázoláshoz annak kettes komplemensét használom.

Miért jó ez nekem? Az összeadás könnyebb, ha a negatív számok kettes komplemensben vannak felírva. Lássunk egy összeadást. Adjuk +5-höz. -1-et.

A mínusz egy:

 00000001

A mínusz egy egyes komplemense:

 11111110

A mínusz egy kettes komplemense:

 11111111

A mínusz egy és az öt összeadása:

  11111111
 +00000101
 _________
 100000100

Az eredményben a baloldali 1-s eltűnik túlcsordulás miatt így marad:

00000100

Ez pedig pontosan négyet jelent. Az eredmény jó, és egyszerű volt az összeadás.

Előjelbit

A számítógépek a számábrázolás során a negatív számokat néha egy előjel bittel jelzik. Ha van egy egy bájt méretű tárolóm, akkor abban 8 bitem van. A biteket jobbról balra számoljuk.

sorszám 8 7 6 5 4 3 2 1
tároló 0 0 0 0 0 1 0 1

A nyolcadik bitet használhatjuk az előjel jelzésére. Azt mondjuk, ha nyolcadik bit 1 akkor negatív számról van szó, a nulla akkor pozitív. A legnagyobb ábrázolható szám így persze csak 7 bites. A fenti tárolóban tehát +5 van.

A következő szám egy negatív számot mutat:

sorszám 8 7 6 5 4 3 2 1
tároló 1 1 1 1 1 0 1 1

Mivel a nyolcadik bit 1 értékkel szerepel, tudjuk, hogy negatív számról van szó.

Veszem a számot:

1111011

Kivonok belőle 1-t:

1111010

Veszem az ellentétét:

0000101

És megkaptam a számot. Ez 5, de mivel be volt állítva az előjelbit, tudjuk, hogy -5.

Irodalom

oktatas/szamitastechnika/szamabrazolas.txt · Utolsó módosítás: 2023/09/11 06:38 szerkesztette: admin