0x7F000000
是0111 1111 0000 0000 0000 0000 0000 0000
中的32位二进制。
0x01000058
是0000 0001 0000 0000 0000 0000 0101 1000
。屏蔽C中的位返回意外的结果
当我和两个数我希望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位编译器。
线的价值是什么? – taskinoor 2011-01-14 19:47:40
将无符号有什么区别? – Marlon 2011-01-14 19:50:29