位與
來(lái)自ALSROBOT WiKi
按位與(&)
按位操作符在變量的位級(jí)執(zhí)行運(yùn)算。它們幫助解決各種常見(jiàn)的編程問(wèn)題。以下大部分資料來(lái)自一個(gè)有關(guān)位數(shù)學(xué)的優(yōu)秀教程,或許可以在這里找到。[1]
描述和語(yǔ)法
以下是所有這些運(yùn)算符的描述和語(yǔ)法。更詳細(xì)的資料或許可以在參考指南中找到。
按位與(&)
在C++中按位與運(yùn)算符是單個(gè)與符號(hào),
用于其它兩個(gè)整型表達(dá)式之間使用。按位與運(yùn)算獨(dú)立地在周?chē)谋磉_(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á)式之間使用&將會(huì)導(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ù)中選擇特定的位,常被稱(chēng)為掩碼屏蔽??慈缦率纠?br />