按位运算符&出乎意料的结果

时间:2014-06-03 22:00:56

标签: c binary bitwise-operators

&运算符处理十进制数的二进制格式。所以10 & 9 = 8因为

1010 (10)
1001 (9)
=====
1000 (8)

前一个例子运行正常。但是当我尝试010 & 010时,我希望结果为10.但是我得到8.有人可以向我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

因为以0开头的数字被视为八进制,而不是二进制。

10被视为十进制,因为它是默认值。因此,10 & 9 = 8测试以十进制形式解析。

当它以0开头时,它被视为八进制。所以010 & 010以八进制解析,如(十进制):8 & 8

0x被视为十六进制

正如Oli Charlesworthdelnan向我指出的那样,二进制没有C标准,尽管有些编译器(例如GCC)将0b视为二进制表示。

有趣的信息:Writing binary number system in C code