嵌入式第十七课!!!!位运算!!!
这是我们C语言篇章的最后一节!!!
位运算符和位运算
优先级是这样排列的:算术预算符 > 位运算符 > 逻辑运算符;
所有的位运算操作数都必须是整型或是与整型相兼容类型,枚举类型可以;
按位运算与“&”
举个例子:
int main(void)
{unsigned char P2 = 0xAA;P2 &= 0xEF;return 0;
}
这个运算符可以指定位为0 ,其他位不变
按位运算或“|”
举个例子:
int main(void)
{int i = 3;//0000 0011int j = 6;//0000 0110i | j = 7;//0000 0111return 0;
}
这个运算符可以指定为1 , 其他位不变
按位运算异或“^”
int main(void)
{int i = 3;//0000 0011int j = 6;//0000 0110i ^ j = 5;//0000 0101return 0;
}
这个运算符的逻辑是两个数位数一样的置0,不一样的位数置1
它的作用是指定位翻转,其他不变。
按位取反符“~”
int main(void)
{int i = 3;\\0x0000 0011~i = 0x1111 1100return 0;
}
这是一个单目运算符,每一位取反;
左移运算符“<<”
int main(void)
{int i = 0xFFFFFFFFi << 2 = 0xFFFFFFFCreturn 0;
}
给 i 从左往右移两位,高位截断,低位补零;
int main(void)
{unsigned char P0 = 0xFF;P0 |= (1 << 2) | (1 << 0);printf("%X\n", P0);return 0;
}
通过这种方法,就可以给特定的位取1,在这个例子里可以将1位和2位取1,然后给p0的1位和2位取0 ,剩余全部取1.
右移运算符“>>”
与上同理,只不过是右移。
以上就是今天和大家分享的全部内容!!!从明天开始将会和大家继续分享数据结构的内容,不定时将会更新C语言简单小项目的制作,感谢大家的阅读!!!!