根据布尔代数,5 等价于二进制的 101。而3相当于011。所以如果我们计算101 | 011 那么它应该是 1000 相当于 2^3 = 8 但是在 vs 代码中编译器给出 7,我的解决方案有什么错误吗?
根据C标准(6.5.12 Bitwise inclusive OR operator)
4 | 的结果运算符是按位包含或的 操作数(也就是说,当且仅当在 转换后的操作数中的至少一个相应位被设置)。
所以你有
101
|
011
====
111
您必须对单个位执行或操作,如 1|0=1,1|1=1,0|1=1,0|0=0。
for 5,the value in bits=1 0 1
for 3,the value in bits=0 1 1
------
1 1 1,which is 7.