arduino的置位操作总结
void setup()
{
Serial.begin(115200);
//将a第4位置1,将b的0位4位7位置1
byte a = B00000010;
byte b = B00100010;
a |= (1<<4);
b |= (1<<7)|(1<<4)|(1<<0);
Serial.print("a="); Serial.println(a,BIN);
Serial.print("b="); Serial.println(b,BIN);
//将c第4位置0,将d的第1位6位7位置0
byte c = B11111111;
byte d = B11111111;
c &= ~(1<<4);
d &= ~((1<<7)|(1<<6)|(1<<1));
Serial.print("c="); Serial.println(c,BIN);
Serial.print("d="); Serial.println(d,BIN);
//取e的低8位
int e = 36023;
//e的二进制为10001100 10110111
e &= 0xff;
Serial.print("e="); Serial.println(e,BIN);
//取f的高8位
int f = 36023;
//f的二进制为10001100 10110111
f = (f>>8)&0xff;
Serial.print("f="); Serial.println(f,BIN);
//高8位与低8位合并
byte L = B10000001;
byte H = B10100001;
word i;
i = (H<<8)|L;
Serial.print("i="); Serial.println(i,BIN);
//高7位与低1位合并
char h = B1001000;
boolean l = 1;
byte j;
h<<=1;
j = h|l;
Serial.print("j="); Serial.println(j,BIN);
//配置寄存器示例
//假设X Y Z是寄存器配置参数,X位于第0位,Y位于第1位,Z位于第7位
byte X = 0;
byte Y = 1;
byte Z = 7;
//假设待配置的字节为num
bool D[]={0,0,0,0,0,0,0,0};
byte num;
D[X]=1;//第0位置1
D[Y]=1;//第1位置1
D[Z]=1;//第7位置1
//将D[7-K]视为最低位赋值给num,随后num左移1位,并重复此步骤
for(int k=0;k<=7;k++){
num <<= 1;//左移1位
num |= D[7-k];//D[7-k]与num合并
}
Serial.print("num="); Serial.println(num,BIN);
//最后num的结果为 10000011
}
void loop()
{
}