位與

來自ALSROBOT WiKi
跳轉(zhuǎn)至: 導(dǎo)航搜索

按位與(&)

按位操作符在變量的位級執(zhí)行運(yùn)算。它們幫助解決各種常見的編程問題。以下大部分資料來自一個(gè)有關(guān)位數(shù)學(xué)的優(yōu)秀教程,或許可以在這里找到。[1]


描述和語法


以下是所有這些運(yùn)算符的描述和語法。更詳細(xì)的資料或許可以在參考指南中找到。


按位與(&)

在C++中按位與運(yùn)算符是單個(gè)與符號,
用于其它兩個(gè)整型表達(dá)式之間使用。按位與運(yùn)算獨(dú)立地在周圍的表達(dá)式的每一位上執(zhí)行操作。根據(jù)這一規(guī)則:如果兩個(gè)輸入位都是1,結(jié)果輸出1,否則輸出0。表達(dá)這一思想的另一個(gè)方法是:

    0  0  1  1    operand1
    0  1  0  1    operand2
    ----------
    0  0  0  1    (operand1 & operand2) - returned result
 

在Arduino中,int型是16位的。所以在兩個(gè)整型表達(dá)式之間使用&將會導(dǎo)致16個(gè)與運(yùn)算同時(shí)發(fā)生。代碼片斷就像這樣:

    int a =  92;    // in binary: 0000000001011100
    int b = 101;    // in binary: 0000000001100101
    int c = a & b;  // result:    0000000001000100, or 68 in decimal.
 

在a和b的16位的每一位將使用按位與處理。且所有16位結(jié)果存入C中,以二進(jìn)制存入的結(jié)果值01000100,即十進(jìn)制的68。


按位與的其中一個(gè)最常用的用途是從一個(gè)整型數(shù)中選擇特定的位,常被稱為掩碼屏蔽。看如下示例: