C++: Ha előjeles típusú változónak (signed) pozitív értéket adok akkor ez az érték is kettes komplemensképzéssel tárolódik?
Igen-igen-igen arra gondoltam amit leírtál, int literál. Szóval ha az int literál előjeles (signed) akkor kettes komplemensképzéssel tárolja akkor is ha az érték pozitív, ugye?
Köszönöm, üdv
Akkor mondok egy pl-t
signed short int x;
2 bájtos, előjeles változó.
Ha pl
a = -682;
akkor a 682 binárisan ábrázolva: 0000 0010 1010 1010 (természetesen szóközöket csak az olvashatóság kedvéért teszek). A negatív előjel miatt ez kettes komplemensképzéssel fog tárolódni, ami így néz ki: 1111 1101 0101 0110
Amikor lekérem az értéket, kettes komplemensképzéssel "visszafejtem", majd a legmagasabb helyiértéken lévő bit ugye az előjelbit (ha jól tudom), így megvan a negatív előjel is.
A kérdésem: Ha
a = 682
Akkor ez hogy kerül letárolásra? Előjeles abszolútértékes ábrázolás/egyes komplemens/kettes komplemens/más? Természetesen ugyanaz a változó.
Ha viszont
unsigned short x;
x = 682;
Akkor csak simán abárolja binárisan?
Köszi szépen h segítesz, üdv
"a = 682
Akkor ez hogy kerül letárolásra? Előjeles abszolútértékes ábrázolás/egyes komplemens/kettes komplemens/más? Természetesen ugyanaz a változó."
Mivel mindenhol ugyanúgy néz ki, ezért teljesen mindegy.
Ugyanúgy?? Ezt nem vágom akkor.
Előjeles abszolútértékes ábrázolás:
(előjelbit és a szám abszolútértéke)
-682 esetén
1000 0010 1010 1010
Ez hogy lenne már ugyanaz mint a kettes komplemensképzéssel:
1111 1101 0101 0110
??
((amúgy a többi jó amiket írtam?)
Elírtam, nem negatív, hanem pozitív..
a = 682 esetén
A pozitív számoknak ugyan az a memóriaképe, mindegy hogy signed vagy unsigned, de ezt már leírták, mit nem lehet ezen érteni?
Hasonló kérdés volt már, lehet hogy te kérdezted: http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..
Lehet hogy így jobban megmarad:
Van egy véges számtartományod 2-es számrendszerben. A legkisebb szám csupa 0 jegyből áll, a legnagyobb csupa 1 jegyből áll, akkor ha előjel nélküli számokat veszünk. Ha előre lépkedünk egyesével akkor közeledünk a számtartomány végéhez.
Ha előjeles számokról van szó akkor ugyan az a 1,2,3 .. ha a negatív számokon akarunk közlekedni akkor a számtartomány másik végétől visszafele kell lépkedni.
Elhiszem hogy megértetted ha meg tudod mondani hogy a -12 hogy nézne ki, 5 számjegyen tízes komplemensbe. (Tízes számrendszerbe ugyan ez a "játék".)
"A pozitív számoknak ugyan az a memóriaképe, mindegy hogy signed vagy unsigned, de ezt már leírták, mit nem lehet ezen érteni? "
Nem ezzel van gondom de akkor nagyon röviden:
signed int a;
a = -12; // kettes komplemensképzéssel kerül tárolásra
a = 10; // és ez?
A kérdésed: 5 számjegyen a -12 TÍZES komplemensképzéssel? Akkor nem vágom; egyes/kettes-ről hallottam csak, a tízes komplemens mit takar?
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!