sddaf23r23r34f34g3g
-
sddaf23r23r34f34g3g
-
um ein bit zu kippen, mach einfach x = x ^ (1<<bit), wobei 'bit' die position des bits ist (0-basiert, von rechts), das du togglen willst.
-
Also irgendwie hast du deine Masken dezimal notiert, das mutet etwas seltsam an.
-
sddaf23r23r34f34g3g
-
Wieso?
`x = 1
x = x ^ (1<<3)
x = 1 ^ (1000bin)
also
0001
^1000
=1001 = 9`
-
das stimmt doch: (1<<3) ist 8, also bit 3 gesetzt. 1^8 ist 9:
binär: 0001 == 1 1000 == 8 nach XOR: 1001 == 9
-
sddaf23r23r34f34g3g
-
History35453 schrieb:
Ich versteh nur nicht warum manchmal als Ergebnis der binär code da steht und manchmal als Integer.
das ist nicht binär, das ist dezimal. C kennt keine binärkonstanten.
-
sddaf23r23r34f34g3g
-
History35453 schrieb:
int x= 0001;
int mask= 1001;x ist 1, weil 1(bin) und 1(dez) zufälligerweise gleuch aussehen. aber deine 'mask' da oben ist 1001(dez), also 1111101001(bin).
-
sddaf23r23r34f34g3g
-
^^im computer ist alles binär. nur dein C-compiler, der ja von 'nem menschen bedient werden soll, erlaubt dezimalzahlen im quelltext. das ist nur manchmal doof, wie du selbst bemerkt hast.