提问人:Programmer 提问时间:12/9/2013 最后编辑:Vadim KotovProgrammer 更新时间:3/9/2019 访问量:8536
按位 '&' 运算符
Bitwise '&' operator
问:
我对按位“&”运算符缺乏一些基本的了解。
5 = 101
4 = 100
因此,为什么以下条件的输出是 true cause,而 bit 的输出应该是 false:if
101 & 100
#include <stdio.h>
main()
{
if(5&4)
printf("Yes\n");
}
答:
22赞
Maroun
12/9/2013
#1
5 是 101。
4 是 100。
5 & 4
不是 0:
101
100 &
↓↓↓
100
问题解决了✓
澄清:
在 C 中,每个非零值都满足条件。意思是,如果你写:if
if (-5) {
if (100) {
// reachable code
}
}
而:
if (0) {
destroyTheWorld(); // we are safe
}
2赞
alk
12/9/2013
#2
因为等于而后者不等于.0b100 & 0b101
0b100
0
3赞
user1814023
12/9/2013
#3
5 - 101
4 - 100
5&4 - 100
这是真的。
1赞
sr01853
12/9/2013
#4
0b101 & 0b100 = 0b100
或
5&4 = 4
4 为非零,打印Yes
1赞
Imtiaz Emu
12/9/2013
#5
它进入 if 条件。因为操作后它返回非零值。在 C 语言中,对于所有非零值,它就像返回 true 一样。&
3赞
Fiddling Bits
12/10/2013
#6
了解按位运算符真值表至关重要。考虑以下情况,其中 和 是输入,是输出。A
B
Y
&(按位和)当输入 A 和 B 为真时,输出为真;否则输出为 false
A B Y
---------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
|(按位或)当 A 或 B 或两个输入均为 true 时,输出为 true;否则输出为 false
A B Y
---------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
^ (按位 X-Or)当 A 和 B 处于相反状态时,输出为 true;否则输出为 false
A B Y
---------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
!(按位不)输出是输入的相反状态
A Y
-----
0 | 1
1 | 0
您的方程 (5 & 4) == (0101 & 0100) == 0100 == 4 == true
0101
& 0100
------
0100
评论