Ha van egy pozitív számom, akkor azt el tudom shiftelni jobbra úgy, hogy negatív számot kapjak?
Nem.
A shift az csak oszt vagy szoroz, a művelet irányától függően.
Ha a szám úgy shiftelődik, hogy az MSB-je 1 lesz, akkor sem lesz belőle negatív (kettes komplemens), hiszen pozitív számként van nyilvántartva.
Adott egy szám, mondjuk egy integer. Legyen az értéke tizenöt (15).
Ez, 8 bites előjel nélküli integer tipusként is, bináris formában így néz ki: 00001111
Ha ezt megszorozzuk minusz eggyel, akkor meg (már előjeles integerként) így fog kinézni: 10001111
Ezt (előjeles integerként) visszaolvasva minusz tizenötöt (-15) fogsz kapni.
Viszont, ha ezt a memóriatartalmat (10001111) nem előjeles, hanem előjel nélküli integerként olvassa vissza a programod, akkor már nem -15, hanem 143 lesz.
Az előjelet a balról legelső bit reprezentálja. Ha az 1 akkor negatív, ha 0, akkor meg pozitív a tárolt számérték.
00001111 ( 15)
10001111 (-15)
Ezért nem jó oktatásra a C meg a C++
Meg kell ismerni a különféle változó- és adat-tipusokat, azok értelmét, jelentőségét, ábrázolás- és tárolásmódját, stb. Ez a legelső lépés.
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!