查看位或的源代碼
←
位或
跳轉(zhuǎn)至:
導(dǎo)航
、
搜索
因為以下原因,你沒有權(quán)限編輯本頁:
您剛才請求的操作只有這個用戶組中的用戶才能使用:
用戶
您可以查看并復(fù)制此頁面的源代碼:
按位或(|)<br> 在C++中按位或運算符是垂直的條桿符號,|。就像&運算符,|獨立地計算它周圍的兩個整型表達(dá)式的每一位。(當(dāng)然)它所做的是不同的(操作)。兩個輸入位其中一個或都是1按位或?qū)⒌玫?,否則為0。換句話說:<br> <pre style="color:red"> 0 0 1 1 operand1 0 1 0 1 operand2 ---------- 0 1 1 1 (operand1 | operand2) - returned result </pre> 這是一個使用一小斷C++代碼描述的按位或(運算)的例子:<br> <pre style="color:green"> int a = 92; // in binary: 0000000001011100 int b = 101; // in binary: 0000000001100101 int c = a | b; // result: 0000000001111101, or 125 in decimal. </pre> 按位與和按位或的一個共同的工作是在端口上進(jìn)行程序員稱之為讀-改-寫的操作。在微控制器中,每個端口是一個8位數(shù)字,每一位表示一個引腳的狀態(tài)。寫一個端口可以同時控制所有的引腳。<br> PORTD是內(nèi)建的參照數(shù)字口0,1,2,3,4,5,6,7的輸出狀態(tài)的常量。如果一個比特位是1,那么該引腳置高。(引腳總是需要用pinMode()指令設(shè)置為輸出模式)。所以如果我們寫入PORTD = B00110001;我們就會讓引腳2,3和7輸出高。一個小小的問題是,我們同時也改變了某些引腳的0,1狀態(tài)。這用于Arduino與串口通訊,所以我們可能會干擾串口通訊。<br> 我們的程序規(guī)則是:<br> 僅僅獲取和清除我們想控制的與相應(yīng)引腳對應(yīng)的位(使用按位與)。<br> 合并要修改的PORTD值與所控制的引腳的新值(使用按位或)。<br> <pre style="color:green"> int i; // counter variable int j; void setup(){ DDRD = DDRD | B11111100; // set direction bits for pins 2 to 7, leave 0 and 1 untouched (xx | 00 == xx) // same as pinMode(pin, OUTPUT) for pins 2 to 7 Serial.begin(9600); } void loop(){ for (i=0; i<64; i++){ PORTD = PORTD & B00000011; // clear out bits 2 - 7, leave pins 0 and 1 untouched (xx & 11 == xx) j = (i << 2); // shift variable up to pins 2 - 7 - to avoid pins 0 and 1 PORTD = PORTD | j; // combine the port information with the new information for LED pins Serial.println(PORTD, BIN); // debug to show masking delay(100); } } </pre>
返回
位或
。
來自“
http://gharee.com/wiki/index.php/位或
”
導(dǎo)航菜單
個人工具
登錄
名字空間
頁面
討論
變換
查看
閱讀
查看源代碼
查看歷史
操作
搜索
導(dǎo)航
首頁
社區(qū)專頁
新聞動態(tài)
最近更改
隨機頁面
工具箱
鏈入頁面
相關(guān)更改
特殊頁面
頁面信息
隱私政策
關(guān)于ALSROBOT WiKi
免責(zé)聲明