记录一些巧妙的位运算方法

置顶顶顶顶顶顶顶顶顶顶顶顶顶

位运算技巧总结(持续更新中...)

一、260.只出现一次的数字3

使用异或运算可以帮助我们消除出现两次的数字

x & (-x) 是保留位中最右边 1 ,且将其余的 1 设为 0 的方法。

记录一些巧妙的位运算方法_第1张图片

二、191. 位1的个数

(当x不为0)x & (x-1) 是将最右边的 1变为0,且其余位保持不变 的方法。

另外:

把右起第一个0变成1: x or (x+1)

把右边连续的1变成0:x and (x+1)

把右边连续的0变成1:x or (x-1)

 

image.png

三、将某一位置0或置1或取反

将x的(从右数)第i位置1,x=x | (1<<(i-1))

将x的(从右数)第i位置0,x=x & !(1<<(i-1))

将x的(从右数)第i位取反,x=x ^ (1<<(i-1))

你可能感兴趣的:(C++,位运算)