Arduino 位操作相关函数
bit()
bit(n);//计算指定位的值
//返回值: bit类型0或者1
void setup() {
Serial.begin(115200);
Serial.println(bit(0));//相当于2的0次幂
Serial.println(bit(1));//相当于2的1次幂
Serial.println(bit(2));//相当于2的2次幂
Serial.println(bit(3));
Serial.println(bit(5));
Serial.println(bit(8));
Serial.println(bit(9));//相当于2的9次幂
Serial.println("----");
Serial.println(~bit(0));//8位单片机按位取反
Serial.println(~bit(1));
Serial.println(~bit(2));
Serial.println(~bit(3));
Serial.println(~bit(5));
Serial.println(~bit(8));
Serial.println(~bit(9));
}
void loop() {
}
bitClear()
:清除数值变量的位。
bitClear(x, n)
x: 要清除其位的数值变量。
n: 要清除哪个位,从0开始清除最低有效位(最右)。`
返回值;x
void setup() {
Serial.begin(115200);
int x = 8;
int n = 1;
int y = bitClear(x, 3);
Serial.print(y); //输出为0
}
void loop() {
}
返回值:
bitWrite()
: 写入数值变量的位。
bitWrite(x, n, b)
x: 要写入的数值变量.
n: 从0开始的最低有效位(最右)要写哪位.
b: 要写入位(0或1)的值。.
void setup() {
Serial.begin(9600);
while (!Serial) {} // wait for serial port to connect. Needed for native USB port only
byte x = 0b10000000; // the 0b prefix indicates a binary constant
Serial.println(x, BIN); // 10000000
bitWrite(x, 0, 1); // write 1 to the least significant bit of x
Serial.println(x, BIN); // 10000001
}
void loop() {}
lowByte()
:从右往左取低位字节。
highByte()
:从左往右取高位字节。
bitSet()
:将对应位置的值设置为1。
void setup() {
Serial.begin(115200);
int x = 15;
int n = 0;
bitSet(x, 1);
Serial.print(x, BIN);
}
void loop() {
}