5 的值是多少 |3 in C?

What is the value of 5 | 3 in C?

提问人:Arijit Ghosh 提问时间:5/26/2022 最后编辑:Vlad from MoscowArijit Ghosh 更新时间:5/1/2023 访问量:1069

问:

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

C 运算符 boolean-logic 按位 - 或

评论

10赞 Jonathan Leffler 5/26/2022
你如何推断二进制应该是?您了解(按位或)运算符要做什么?您需要阅读教科书中解释 C 中按位运算符如何工作的部分。101 | 0111000|
2赞 jarmod 5/26/2022
它没有添加。
1赞 yano 5/26/2022
读取按位 OR(甚至使用 5 和 3 作为示例)
0赞 William Pursell 5/1/2023
布尔代数与 5(以 10 为基数)是 101(以 2 为基数)这一事实无关。布尔代数告诉你 101 |011 是 111。布尔代数再次与 111(以 2 为基数)是 7(以 10 为基数)这一事实无关

答:

1赞 Vlad from Moscow 5/26/2022 #1

根据 C 标准(6.5.12 位(含 OR 运算符)

4 |operator 是 操作数(即,当且仅当 at 在转换的操作数中至少设置一个相应的位)。

所以你有

 101
|
 011
====
 111
1赞 Jyothi 4/26/2023 #2

您必须对单个位执行 or 运算,如 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.