0x7F000000
равно 0111 1111 0000 0000 0000 0000 0000 0000
в 32-битном двоичном формате.
0x01000058
- это 0000 0001 0000 0000 0000 0000 0101 1000
.
Когда я И два числа вместе, я ожидаю 0000 0001 0000 0000 0000 0000 0000 0000
, но по некоторым причинам я получаю 0.
Вот мой код:
#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");
Каждое из приведенных выше сравнений возвращает ноль. Это как-то связано с 32/64 битами? Я использую 64-битный компилятор.