关于位运算的一点进阶方法和记忆方法
前言
是不是对位运算感到头痛呢?特别是寄存器会时常用到它,进行位运算。那么本文会告诉你一些记忆方法和应用
1.| 或
口诀:同1或,结果为1,同0或,结果为原始值。
| 看起来像不像1呢?
看起来像1,就遇到1变成1,那么就知道遇到0,为原始值了。
2.& 与 且
口诀:同0与,结果为0,同1或,结果为原始值。
&看起来像不像0呢?
看起来像0,就遇到0变成0,那么就知道遇到1,为原始值了。
还有一种解释方法:做乘法 而且&是不是类似*符号呢
3.异或 ^
口诀:同1异或,结果取反,同异或,结果为原始值
还有一种解释为:不进位加法
4.<< >>
5.应用
第几位:
5.1 让a中第n位值为1
a | =(1<<n)
记忆方法: | 像1,可以任意数据变成1
原理就不分析了,有时间在做补充
5.2 让a中第n位值为0
a & =~ (1<<n)
-
记忆方法:&像0,可以让任意数据变成0
-
在0的一端取反值不变。
原理就不分析了,有时间在做补充
5.3 让a中第n位值取反
a ^ =~ (1<<n)
记忆方法:^像~,可以让任意数据变成取反
二个取反 ^ ~ 结果不变
原理就不分析了,有时间在做补充
5.4 读a中第n位的值
a &(1<< (n-1) )
5.5 去掉a中最后的一个1。
a&(a-1)