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。
0|0=0 0|1=1 1|0=1 1|1=1
a|b=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则不是

You may also like...

发表评论