複合位或
出自YFRobotwiki
|
複合位與(&=)經常被用來設置變數或者常量的某一位為0。代碼中,常被用作"清零"或者"重置"變數的某位。 複合位或操作符(| =)經常用於變數和常量「設置」(設置為1),尤其是變數中的某一位。
x |= y; // 相当于 x = x | y;
x: 字元型,整型,長整型變數 y: 字元型,整型,長整型常量
先來看下按位或(|)的用法 0 0 1 1 运算元1 0 1 0 1 运算元2 ---------- 0 1 1 1(运算元1 | 运算元2) - 返回的结果 如果變數myByte中某一位與0經過按位或運算後不變。 myByte | B00000000 = myByte; 與1經過或運算的位將變為1. myByte | B11111111 B11111111; 因此 - 設置變數的某些位為0和1,而變數的其他位不變,可與常量B00000011進行按位與運算(| =)
/*
1 0 1 0 1 0 1 0 变量
0 0 0 0 0 0 1 1 掩码
----------------------
1 0 1 0 1 0 1 1
没有发生变化的位数
位设置
*/
myByte = 10101010;
myByte &= B1111100 == B10101000;
接下來的操作相同,只是將變數用x代替
x x x x x x x x variable
0 0 0 0 0 0 1 1 mask
----------------------
x x x x x x 1 1
没有发生变化的位数
位设置
同理 myByte = B10101010; myByte | = B00000011 == B10101011;
|
更多建議和問題歡迎反饋至 YFRobot論壇