Endre1999 kérdése:

Int a=130; char c = -a; printf ("%d\n", c) ; Az eredmény 126, de miért, Mi történik a belső memóriában?

Figyelt kérdés

126(10) = 1111110(2)

130(10) = 10000010(2)

A belső memória között nem látom az összefüggést.



2020. jan. 28. 00:57
 1/4 anonim ***** válasza:
Nem értem a kérdést. A - karakterkódot íratsz ki itt.
2020. jan. 28. 01:03
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
Vagyis nem is ezt: - hanem ezt ~.
2020. jan. 28. 01:05
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
84%

A kódod elvileg a következő:

int a=130;

char c = -a;

printf ("%d\n", c);

Tehát, "a" integer változó értéke 130. "c" karakter típusú változó értékének pedig az "a" -1-szeresét akarod értékül adni. Vagyis c-nek -130-at akarsz beállítani. Mivel a karakter típusú változó is unsigned, nem vehet fel negatív értéket. Ergo túlcsordul, csak nem fölfele, hanem lefele, tulajdonképpen "visszacsordul". Mivel 8 bit nagyságú a c, ezért az új értéke 2^8-130 lesz, vagyis 126.

2020. jan. 28. 01:40
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

char: 1 byte, azaz 8 bit, unsigned char 0..(2**8-1), signed char(-(2**7-1)..+(2**7-1)


Ez még segít kiirni bináris formában :

[link]

2020. jan. 28. 06:25
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!