按位'&'运算符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按位'&'运算符相关的知识,希望对你有一定的参考价值。
我在按位'&'运算符中缺乏一些基本的理解。
5 = 101
4 = 100
那么为什么下面的if
条件的输出是真正的原因和位101 & 100
应该是假的:
#include <stdio.h>
main()
if(5&4)
printf("Yes\n");
答案
5是101。
4是100。
5 & 4
不是0:
101
100 &
↓↓↓
100
问题解决了✓
澄清:
在C中,每个非零值都满足if
条件。意思是,如果你写:
if (-5)
if (100)
// reachable code
鉴于:
if (0)
destroyTheWorld(); // we are safe
另一答案
5 - 101
4 - 100
5&4 - 100
是真的。
另一答案
因为0b100 & 0b101
等于0b100
而后者不等于0
。
另一答案
理解按位运算符真值表是至关重要的。考虑以下情况,其中A
和B
是输入,Y
是输出。
&(按位和)当输入A和B为真时,输出为真;否则输出是假的
A B Y
---------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
| (按位或)当A或B或两个输入都为真时,输出为真;否则输出是假的
A B Y
---------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
^(按位X-Or)当A和B为相反状态时,输出为真;否则输出是假的
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
另一答案
0b101 & 0b100 = 0b100
要么
5&4 = 4
4是非零并打印Yes
另一答案
它进入if条件。因为在&
操作之后它返回非零值。在C中,对于所有非零值,它就像返回true一样。
以上是关于按位'&'运算符的主要内容,如果未能解决你的问题,请参考以下文章