複合位與
從 YFRobotwiki
複合位與(&=)經常被用來設置變量或者常量的某一位為0。代碼中,常被用作"清零"或者"重置"變量的某位。
x &= y; // 相当于 x = x & y;
x: 字符型,整型,長整型變量 y: 字符型,整型,長整型常量
先來看下按位與(&)的用法 0 0 1 1 运算数1 0 1 0 1 运算数2 ---------- 0 0 0 1 (运算数1 & 运算数2) - 返回值 任何數和0相與(&)後,所有位數都會清零,所有如果myByte是一個位變量 myByte & B00000000 = 0; 任何數和1相與(&)後,所有位數都不會發生改變,同樣有個變量myByte myByte & B11111111 = myByte; 注意:由於我們可以用位操作數來處理位數據,所以在二進制常量的使用上會非常方便。某個二進制數可以用其他表達式來表示,只是不太方便理解。所以,B00000000這樣寫是為了看的更清楚點,不過它依然表示"0"。 所以,如果想要設置變量的某位為0或者1,而保持其他位不變的方法是,可與常量B11111100進行複合位與(&=)操作。 /* 1 0 1 0 1 0 1 0 变量 1 1 1 1 1 1 0 0 掩码 ---------------------- 1 0 1 0 1 0 0 0 返回值 没有发生变化的位数 位数被清零 */ 我們用x來替換變量上的位值,可見結果是相同的: x x x x x x x x variable 1 1 1 1 1 1 0 0 mask ---------------------- x x x x x x 0 0 没有发生变化的位数 位数被清零 同理 myByte = B10101010; myByte&= B11111100 == B10101000;
|
更多建議和問題歡迎反饋至 YFRobot論壇