簡體   English   中英

不應使用按位運算符代替邏輯運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM