以前不怎么刷题,不怎么用到位运算相关知识,最近发现位运算好像用的范围比较广,因此记录一下比较常用的操作,该篇文章持续更新,以后用到新的操作就会更新:
- 将最低位1变成0:
x=x&(x-1)
。在二进制运算中,减一的这个操作实际上就是把最低位的1变为0,从当前位往后剩下的位数全都置为1,然后在与原来的x做一个与操作就能把变为1的那些位重新变为0,例如12=1100,进行减一操作后变成11=1011,此时12&11=1100&1011=1000
,就完成了最低位的1变成0的操作。 - 将最低位0变成1:
x=x|(x+1)
。同理,加一的操作实际上就是把最低位的0变成1,从当前位往后剩下的位全部置为0,然后再与原来的x做一个或操作就能把变为0的那些位重新置为1,例如11=1011,进行加一操作变成12=1100,此时11|12=1011|1100=1111
,就完成了最低为的0变成1的操作。