Honnan tudom eldönteni, hogy a kettes számrendszerben a számom pozitív vagy negatív?
A tankönyvben most tanulom a kettes komplemens kódot 8 bites tárolás esetén. A tankönyv azt írja: "a negatív szám kódjában a legnagyobb helyiértékű bit 1 értéke jelzi a negatív előjelet".
Akkor honnan döntöm el, hogy a 11111111 a 255-öt jelöli, vagy egy negatív számot?
> Akkor honnan döntöm el, hogy a 11111111 a 255-öt jelöli, vagy egy negatív számot?
Nem tudod eldönteni… Mihez is hasonlítsam a dolgot. Van egy fa, amin van három függőleges vonal: | | |. Ha nincs értelmezési kontextus, akkor ezek lehetnek rovátkák – vagy római szám –, és akkor 3-at jelent, de lehet, hogy elnagyoltan leírt 1-esek és akkor 111-et jelent. Vagy mit jelent az X? Ha úgy értelmezzük, akkor egy betű. Ha római számként értelmezzük, akkor 10-et jelent. Ha meg geometriai szempontból értelmezzük, akkor a két volna, aminek a metszéspontja kijelöl egy pontot. Az X önmagában csak egy jel, ahogyan az 1111 1111 is. Hogy mi a jelentése, azt tisztázni kell.
Tehát ha valaki felteszi azt a kérdést, hogy az 1111 1111 az most negatív vagy pozitív, akkor a kérdés hiányos, mert nem mondta meg, hogy milyen számábrázolásban kellene ezt a jelsort értelmezni. Ez olyan, mintha valaki megkérdezné, hogy mennyi egy 0,5 átmérőjű henger térfogata. Erre a válasz egy visszakérdezés, hogy milyen magas hengerről van szó.
> Ez a számábrázolás hogyan működik? Ezt is le kell programozni akkor, hogy melyiket akarom használni vagy hogy működik a dolog?
Alapvetően azt kell tudnod, hogy többféle számábrázolás van, ami eltérő mennyiségű bitet használ, illetve eltérő jelentéssel bír ugyanaz a bitsorozat. Egy programozási nyelvben te határozod meg, hogy egy változó milyen típusú. 8 bites előjeles? 8 bites előjel nélküli? 16 bites előjeles? 16 bites előjel nélküli? Amit te megadsz. Kb. ennyit kell „leprogramozni”. A többit már a processzor végzi.
Annyiból jó ismerni a tulajdonságukat ezeknek a típusoknak, jó ismerni a számábrázolás módját, mert ha előjeles 8 bites egészen akarod tárolni azt, hogy hányadik napjánál tartunk az évnek, akkor érhetnek kellemetlenségek. Van olyan programnyelv, ami ilyenkor hibát fog jelezni, de van olyan programnyelv, ami zokszó nélkül elvégzi a műveletet, túlcsordul, és bár a program fut tovább, csak éppen nem azt csinálja, amit szeretnél. Pl. ha a változód 8 bites előjeles egész, akkor a 127 még belefér, azt 0111 1111 formában fogja tárolni. De ha növeled az értékét eggyel, akkor elvégzi a műveletet előjel nélkül, így 1000 0000 lesz a változó értéke, csak az az adott változótípusnál nem 128-at, hanem -128-at fog jelenteni.
Tehát ha azt akarod tárolni, hogy hányadik napja van az évnek, akkor a legkisebb tárolandó érték a 0 lesz, a legnagyobb a 366, így ennek megfelelően kell változótípust megadni, ami 16 bites lesz, az előjel meg nem számít, mert előjeles és előjel nélküli 16 bites egészbe is bele fog férni.
Kb. ennyit kell tudni a gyakorlatban, ennyi jelentősége van a számábrázolási módoknak és a változótípusoknak.
Köszönöm a választ! Sokat segített :)
Zöld kéz neked is ment
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!