Felhasználói eszközök

Eszközök a webhelyen


oktatas:szamitastechnika:szamabrazolas

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

oktatas:szamitastechnika:szamabrazolas [2019/08/22 16:22] (aktuális)
admin létrehozva
Sor 1: Sor 1:
 +[[oktatas:​számítástechnika|<​ Számítástechnika]]
  
 +
 +====== Számábrázolás ======
 +
 +  * **Szerző:​** Sallai András
 +  * Copyright (c) Sallai András, 2012, 2014, 2015, 2017
 +  * Licenc: GNU Free Documentation License 1.3
 +  * Web: http://​szit.hu
 +===== Osztályozás =====
 +
 +  * 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 ===
 +2<​sup>​n-1</​sup>​hozzá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
 +
 +2<​sup>​n-1</​sup> ​
 +
 +akkor
 +
 +2<​sup>​7</​sup>​ = 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>m * a^k</​m>​
 +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:
 +
 +  * <​m>​10^0=1</​m>​
 +  * <​m>​10^1=10</​m>​
 +  * <​m>​10^2=100</​m>​
 +  * <​m>​10^3=1000</​m>​
 +  * 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:
 +
 +
 +<m>
 +3,4 * 10^{1}
 +</m>
 +
 +A fenti szám szimplán leírva:
 +
 +<​m>​34,​0</​m>​
 +
 +De ugyanezt jelentik a következő alakok is:
 +  * <​m>​340,​0 * 10^-1</​m>​
 +  * <​m>​34,​0 * 10^0</​m>​
 +  * <​m>​0,​340 * 10^2</​m>​
 +  * <​m>​0,​0340 * 10^3</​m>​
 +
 +Láthatjuk, hogy a vessző ide-oda mozoghat, ha változtatjuk a hatványt. Úgy is mondhatnánk a vessző ide-oda lebeg. ​
 +Innen ered a számábrázolás neve: Lebegőpontos számábrázolás.
 +
 +Az eredeti alakban: <​m>​34,​0</​m>,​ 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
 +
 +{{:​oktatas:​számítástechnika:​egyszerespontossag.png|}}
 +
 +=== Dupla pontosság ===
 +
 +64 bites
 +
 +{{:​oktatas:​számítástechnika:​duplapontossag.png|}}
 +
 +=== Kiterjesztett pontosság ===
 +
 +{{:​oktatas:​számítástechnika:​kiterjesztettpontossag.png|}}
 +===== 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:
 +
 +<​m>​0,​340 * 10^2</​m>​
 +
 +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:
 +
 +<​m>​0,​340 * E^2</​m>​
 +
 +Ekkor elhagyható a szorzás jel és a 2-es felső indexben ábrázolása:​
 +
 +<​m>​0,​340E2</​m>​
 +
 +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:
 +
 +<​m>​0,​340E+2</​m>​
 +
 +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:
 +  * <​m>​0340,​0 * 10^-1</​m>​
 +  * <​m>​034,​0 * 10^0</​m>​
 +  * <​m>​0,​340 * 10^2</​m>​
 +  * <​m>​0,​0340 * 10^3</​m>​
 +
 +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:
 +
 +  * <​m>​0,​340 * 10^2</​m>​
 +
 +
 +===== 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 =====
 +
 +  * http://​www.inf.unideb.hu/​~jvegh/​public/​edu/​ASM386/​AoAHLA/​html/​ch04s02.html (2014)
oktatas/szamitastechnika/szamabrazolas.txt · Utolsó módosítás: 2019/08/22 16:22 szerkesztette: admin