- 前言
- 一、按位与(&)
- 二、按位或(|)
- 三、按位异或(^)
- 四、按位异或(⊙)
- 五、按位取反(~)
- 六、左移()
- 八、单片机中的应用
- 总结
运算规则:参加运算的两个操作数(二进制模式),只有当相应位上全部为1时取1, 存在0时为0
1&1=1 1&0=0 0&1=0 0&0=0
1110 &0100 = 0100
注:与这个两个的区别 &&:逻辑与,运算符两边的表达式的值都为true运算结果为true, 其余情况为false
||:逻辑或 运算符两边的表达式的值都为false运算结果为false, 其余情况为true
与运算的作用: 1.清零 如果想将某位清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零
led &=0XFF0F; //将led第 4-7 位清 0
2.取一个数的指定位
led = 1101 0111
led & 0000 1111 = 0000 0111 //取led的低四位,
取某个数x的低几位,只需要另找一个数y,令y的低几位为1,其余位为0,然后将x与y进行按位与运算(x&y)即可得到x的指定位
3.判断奇偶 只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。
二、按位或(|)运算规则:参加运算的两个操作数(二进制模式),只要当相应位上存在1时取1, 全部为0时为0
1101 0101 | 0010 0010 = 1111 0 111
作用: 置1:常用来对一个数据的某些位设置为1
led | 0000 1111 将led的低四位置1
三、按位异或(^)
运算规则:参加运算的两个操作数(二进制模式),只有当相应位上的数字不相同时取1, 相同为0
1^1 = 0 0^0 = 0 0^1=1^0 = 1
作用: 1.翻转指定位(与1相异或值变化) 比如将数 X=1010 1110 的低4位进行翻转,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行异或运算(X^Y=1010 0001)即可得到。
2.与0相异或值不变
1010 1110 ^ 0000 0000 = 1010 1110
3.交换两个数
void Swap(int &a, int &b)
{
if (a != b)
{
a ^= b;
b ^= a;
a ^= b;
}
}
四、按位异或(⊙)
运算规则:参加运算的两个操作数(二进制模式),只有当相应位上的数字相同时取1, 不相同为0
1⊙1 = 0⊙0 = 1 0⊙1=1⊙0 = 0
五、按位取反(~)
运算规则:操作数(二进制模式),0变1,1变0
~(1001) = 0110
六、左移(
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?