0x7F000000
ist 0111 1111 0000 0000 0000 0000 0000 0000
in 32-Bit-Binärdatei.
0x01000058
ist 0000 0001 0000 0000 0000 0000 0101 1000
.Maskierung eines Bits in C mit unerwartetem Ergebnis
Als ich und die beiden Zahlen zusammen 0000 0001 0000 0000 0000 0000 0000 0000
erwarte ich, aber aus irgendeinem Grund, den ich bekommen 0.
Hier ist mein Code:
#define MASK_binop 0x80000000
#define MASK_operation 0x7F000000
int instruction=atoi(line);
if((MASK_binop & instruction)>0)
printf("binop\n");
else if((MASK_operation & instruction)>0)
printf("operation\n");
hält Rückkehr Null Jede der oben genannten Vergleiche. Hat es etwas mit 32/64 Bits zu tun? Ich verwende einen 64-Bit-Compiler.
Was ist der Wert der Linie? – taskinoor
würde unsigned einen Unterschied machen? – Marlon
@Marlon: höchstwahrscheinlich nicht. –