[英]Bitwise '&' operator
我對按位“&”運算符缺乏一些基本的了解。
5 = 101
4 = 100
那么, if
條件為true的情況下,為什么以下輸出以及位101 & 100
應為false :
#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為true時,輸出為true; 否則輸出為假
A B Y
---------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
| (按位或)當A或B或兩個輸入都為true時,輸出為true;否則為true。 否則輸出為假
A B Y
---------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
^(按位X-Or)當A和B處於相反狀態時,輸出為true; 否則輸出為假
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.