具有and和位到位-C代码的条件
我想知道这个代码的作用具有and和位到位-C代码的条件,c,C,我想知道这个代码的作用 if(a & b) {....} 其中a和b都是int 执行该条件所需的(a&b,例如8位)值必须是多少。它执行AND操作() 这是AND门的真值表 +----------+-----------+-------------+ | X | Y | X & Y | +----------+-----------+-------------+ | 0 | 0 | 0
if(a & b) {....}
其中a
和b
都是int
执行该条件所需的(
a&b
,例如8位)值必须是多少。它执行AND操作()
这是AND门的真值表
+----------+-----------+-------------+
| X | Y | X & Y |
+----------+-----------+-------------+
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
+----------+-----------+-------------+
现在,按位的&
取任一侧两个数字的二进制,并对其对应的每个位执行and。比如说
0011 0110 // 54
& 0001 0001 // 17
---------------
0001 0000 // 16
因此,要满足您的条件(if(a&b)
)的示例如下
a = 3;
b = 1;
所以
这是1,这是真的
失败的唯一条件是a
和b
的所有对应位不相同或为零
比如说,
a=3;
b=4;
所以
它是0,因此false
,只要结果为false,if语句就不会执行
因此,对于除0以外的
a&b
的任何值,如果执行了条件。一个示例应阐明:
a =0b 1111 0000
b =0b 0001 0001
a&b=0b 0001 0000
只有当a和b中的第n位均为1时,a和b中的第n位才为1。如果值a和b不同于0,则If语句将是真实的。您做过一些研究吗?
0000 0011 // 3
& 0000 0100 // 0
----------------
0000 0000 // 0
a =0b 1111 0000
b =0b 0001 0001
a&b=0b 0001 0000