c++中位运算的相关知识
今天来谈一下c++中各种位运算的使用方法。
毕竟学了一年多c++都没搞懂这几个符号的具体用处
二进制中只有0和1
<<左移运算符与>>右移运算符
a<<b 即为a后添加b个0 注意是二进制数
相当于a乘以2的b次方
a<<1 等于a*2 但是计算机中前者更快噢
a>>b 即为讲a的后b位去掉
相当于a除以2的b次方
我们在下文中假设
A = 0011 1100
B = 0000 1101
--或操作符 有一位为1运算结果即为1。
00=0 01=1 10=1 11=1
ab=0011 1101
&—与操作符 两位都为1运算结果才为1
0&0=0 1&0=0 0&1=0 1&1=1
a&b=0000 1100
^—异或运算符 不同则为1 相同则为0
0^0=0 0^1=1 1^0=1 1^1=0
a^b=0011 0001
~—取反操作符 0变1 1边0
运用举例
将a从右往左数第x位置置为1
a=(1<<x)
将a从右往左数第x位置置为0
a&=~(1<<x)
得到a的从右往左数第x位
a&=(1<<x)
判断a是否是2的n次幂
(n & (n - 1)) == 0 如果等于0 是 等于1则不是
c++中位运算的相关知识
https://47.97.0.163/2020/04/14/c中位运算的相关知识/