[英]The bitwise operators should not be used in place of logical operators
// How does this program work with ternary operator
#include <stdio.h>
int main()
{
int x = 2, y = 5;
(x & y) ? printf("True ") : printf("False "); // How do we get output
(x && y) ? printf("True ") : printf("False ");
return 0;
}
該程序如何工作? 邏輯和按位運算符如何工作?
在此程序中, &
是按位運算符,它將按位進行運算, and
在2和5上進行運算。
0000 0010<=2
0000 0101<=5
0000 0000<=output
因此,第一行將顯示False
,而第二行將顯示normal, and
運算符的兩個值均為true(非零數字),因此2 && 5
將得出true,而輸出將為True
。
按位AND運算符是單個&符:&。 一個方便的助記符是布爾AND和&&的小版本可用於較小的塊(位而不是字節,字符,整數等)。 本質上,二進制“與”僅以二進制形式對數字的每個位置中的位進行邏輯“與”運算。
&( 和 )的示例:
00000010 & //2
00000101 = //5
--------
00000000 // 0
按位或的工作原理與按位與的方法幾乎完全相同。 唯一的區別是,對於該位置的位中的結果為1,只有兩個位之一需要為1。(如果兩個位均為1,則該位置的結果也將為1。)符號為管道:|。 同樣,這類似於布爾邏輯運算符||。
示例| ( 或 ):
00000010 | //2
00000101 = //5
--------
00000111 //7
沒有按位異或的布爾運算符,但是有一個簡單的解釋。 異或運算采用兩個輸入,並且如果一個輸入或另一個輸入均為1,則返回1,但如果兩個輸入都不為1,則返回1。 即,如果兩個輸入均為1或兩個輸入均為0,則返回0。按插入號運算符^進行按位異或運算,對每對位執行異或運算。 異或通常是XOR。
^( XOR )的示例:
00000010 ^ //2
00000101 = //5
--------
00000111 //7
如果您遇到按位運算符,我建議您得到一支筆和紙,想象2個隨機的8位數字並將它們全部處理在紙上(所有按位運算)。 然后,您可以找到一個程序員計算器,並查看結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.