5的价值是多少| 3 在 C 中?

问题描述 投票:0回答:2

根据布尔代数,5 等价于二进制的 101。而3相当于011。所以如果我们计算101 | 011 那么它应该是 1000 相当于 2^3 = 8 但是在 vs 代码中编译器给出 7,我的解决方案有什么错误吗?

c bitwise-operators boolean-logic bitwise-or
2个回答
1
投票

根据C标准(6.5.12 Bitwise inclusive OR operator)

4 | 的结果运算符是按位包含或的 操作数(也就是说,当且仅当在 转换后的操作数中的至少一个相应位被设置)。

所以你有

 101
|
 011
====
 111

1
投票

您必须对单个位执行或操作,如 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.
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.