Kezdőoldal » Számítástechnika » Programozás » Lebegőpontos (valós számok)...

Lebegőpontos (valós számok) számok tárolása?

Figyelt kérdés

Programozzunk Turbo Pascal nyelven c. könyv:


"A valós számok a*2^b formában tárolódnak ahol az a egy (fixpontos) kettedes tört, míg a b 2 hatványkitevője. Pl a 5.25 a 1.1010*2^2 formában tárolódik"


Ez h így tárolódik ez programozásban mindenhol igaz h a számítógép így tárolja a memóriaterületen vagy ez csak Turbo Pascal-nál érvényes. Az h "kettedes tört" azt jelenti h kettes számrendszerben felírt tizedestört? Továbbá a példaszám az hogy jön ki?


Köszönöm előre is, üdv


2012. júl. 10. 17:37
 1/10 anonim ***** válasza:
Hát gondolom, mint a tízes számrendszerben a normálalak. Pl: 1,4 * 10^5 = 1,4 * 100000 = 140000.
2012. júl. 10. 18:02
Hasznos számodra ez a válasz?
 2/10 coopper ***** válasza:

Szia.


Nem kavartad össze egy kicsit a 0-kat és az 1-ket ?


A példádnál maradva : 2^2=4

1.1010 = 1*1 + 1*0.5 + 0*0.25 + 1*0.125 + 0*0.0625 = 1.625

1.625*4=6.5

Tehát az eredmény : 6.5


A jó szám esetém : 1.0101 = 1*1 + 0*0.5 + 1*0.25 + 0*0.125 + 1*0.0625 = 1.3125

1.3125*4 = 5.25

Tehát az eredmény : 5.25



Sok sikert.

Üdv.

2012. júl. 10. 18:21
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
100%
A memóriában címezhető adatterületek vannak, a buszarchitektúra által meghatározott mélységben és szélességben, és nem ilyen-olyan számábrázolások. Azt a programozó dönti el, hogyan és milyen módon ábrázolja a rendelkezésre álló területeken az adatait. Az ALU-nak fogalma sincs arról, milyen típusú adatokkal dolgozik.
2012. júl. 10. 18:41
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:

Köszönöm a válaszod.


Nem,nem kevertem össze a 0-tés 1-t, teljesen biztos vagyok benne h így van a könyvben, itt van előttem abból másolom:


5.25, 1.1010*2^2


A két kifejtés amit leírtál annak mi a logikája? Mert erről nem r a könyv. Látok benne vmi logikusságot, de ha leírnád azért hálás lennék :D


És az h így tárolódik, az operációs rendszer szinten igaz vagy csak a Pascal programokra?


Köszönöm, Üdv

2012. júl. 10. 18:42
 5/10 anonim ***** válasza:

[link]


Első 2 oldalt olvasd el, hátha jobban megérted.

(A linkben a @-ot cseréld a-ra, máshogy nem engedte.)

2012. júl. 10. 18:47
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
Hasonló a tárolás. A nyelvek leírásában általában azt adják meg, hogy hány bájtos számtípusok vannak. Maga a gép karakterisztikát és mantisszát tárol, és mivel a mantissza kettes számrendszerben mindig eggyel kezdődik, ezért ezt nem tárolják, így nyernek egy bitet (rejtett bit), és a kettedespontot sem teszik ki, csak tudják, hogy van. Egész számoknál persze magát a számot tárolják kettes számrendszerben; ha előjeles, akkor előjelbit is van, akkor 0 a nemnegatív és 1 a negatív számoknak. Egyes nyelvekben még vannak fixpontos számok is.
2012. júl. 10. 18:51
Hasznos számodra ez a válasz?
 7/10 coopper ***** válasza:
100%

Szia.


Kezdjük a második kérdésednél : Minden programozási nyelvben vannak változók. A változóknak vannak tipusaik (pl. Byte, Char, String, Longint, Shortimz, Single, Real)

Nos ezek a tipusok határozzák meg a tárolási módot a memóriában.


A byte és a char az elvileg 1 bájton fog tárolódni, mig a string (pascalban) 256 bájton, a Longint 4 Bájt, a Single szintén 4 bájt a Real az azt hiszem 6 bájt.


A Te általad emlitett tárolási forma a Singlénél és a Reálnál valószinűsithető.


A változók tárolási módszerébe Neked nem sok beleszólásod van (csak egész kis mértékben, azzal, hogy megadod a változó tipusát), mivel ezt egészben a forditó végzi.


Ha a forditó úgy van megirva, hogy minden char tipúsú változóhoz - ami elvileg 1 bájtos - 500 bájtot rendeljen hozzá, akkor az a Char tipúsú valtozó 500 bájton fog tárolódni - Tudom, hogy ilyen nincs, de elképzelhető egy igy megirt forditó is.


Ebből következik, hogy azt, hogy hogyan tárolódnak a változók a memóriában a forditó határozza meg, és azt is hogy 1,2, vagy több bájt tartoztik 1 változóhoz.


Ezért nem lehet egyenesen kijelenteni, hogy minden programnyelvben úgyanúgy tárolódnak a változók (nagy valószinűség szerint igy van, mivel mindenhol törekedtek a memória felhasználás csökkentésére, de ez nagyban függ a forditótól és attól kik készitették azt a forditót.)



1 kérdés :


Helyiértékek.


A tizes számrendszerben a helyiértékek a következők :

10^3=100, 10^2=10, 10^1=1, 10^-1=0.1, 10^-2=0.01, 10^-3=0.001


A kettesben ugyan ilyen alapon :

2^3=8, 2^2=4, 2^1=1, 2^-1=0.5, 2^-2=0.25, 2^-3=0.125


A Példádnál maradva : 5.25.

Át kell alakitani kettes számrendszerbe a megadott formula aalpján a*2^b :


Ez tizesben automatikusan megy (nem is gondolunk bele, mert rutinszeruen tudjuk), kettesben is ugyanúgy kell mint tizesben tehát :


5.25-ben a 2^3=8 nincs meg tehát 0, és maradt 5.25

5.25-ben a 2^2=4 megvan, tehát ez az ami a "b"-t adja (2^2 tehát B=2), az osztás eredménye (5.25/4) pediglen 1.3125.


Ezt kell kettes számrendszerbe átalakitani, hogy megkapjuk "a"-t :

1.3125-ben a 2^1=1 megvan, tehát 1 és maradt 0.3125

0.3125-ben a 2^-1=0.5 nincs, tehát 0 és maradt 0.3125

0.3125-ben a 2^-2=0.25 megvan, tehát 1 és maradt 0.0625

0.0625-ben a 2^-2=0.125 nincs, tehát 0 és maradt 0.0625

0.0625-ben a 2^-3=0.0625 megvan, tehát 1 és maradt 0


Az 5.25 tizes számrendszerbeli szám valós számként ábrázolva a*2^b formában : 1.0101*2^2


Sok sikert.

Üdv.

2012. júl. 10. 19:21
Hasznos számodra ez a válasz?
 8/10 iostream ***** válasza:
100%

Egész típusoknál nem számít sokat az architektúra, nagyjából transzparensen meg lehet oldani tetszőleges méretű egészek műveleteit, nyílván akkor ideális, ha a méret kisebb egyenlő az adott rendszer bitszélességével.


A lebegőpontos számoknál viszont sokat számít az FPU, ugyanis a processzor "alap" részei nem képesek lebegőpontos számításokat végezni. Mivel ez jórészt szabványosított, így mondhatjuk, hogy a legtöbb programozási nyelvben legalábbis megtalálhatóak ezek a típusok:

[link]


De maga a számábrázolás ELVE mindenhol ugyanaz: karakterisztika és mantissza.

2012. júl. 10. 19:57
Hasznos számodra ez a válasz?
 9/10 A kérdező kommentje:

Nagyon-Nagyon köszönöm a válaszokat, sokat segítettek!


Köszönöm, Üdv.

2012. júl. 10. 20:01
 10/10 coopper ***** válasza:

Nem szólt senki, de rosszul irtam, elnézést mindenkitől.


Igy a helyes :


A tizes számrendszerben a helyiértékek a következők :

10^3=1000, 10^2=100, 10^1=10, 10^0=1, 10^-1=0.1, 10^-2=0.01, 10^-3=0.001


A kettesben ugyan ilyen alapon :

2^3=8, 2^2=4, 2^1=2, 2^0=1, 2^-1=0.5, 2^-2=0.25, 2^-3=0.125


Mégegszer bocsi.


Üdv.

2012. júl. 11. 21:12
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!