位运算总结

1、基础位运算

<< :左移

>> :右移

~ :取反

& :有0就是0

|  :有1就是1

^  :相同为零,相异为1  /  无进位相加

2、给一个数N,确定他的二进制第X位是0还是1

解法:根据 & 运算,先把N右移(>>)X位,然后 & 1 ,即可得出结果。

3、将一个数N的二进制表示的第X位修改成1

解法:根据 | 运算,先把1左移(<<)X位,然后 | N,即可得出结果。

4、将一个数N的二进制表示的第X位修改成0

解法:根据 & 运算,先将1左移(<<)X位,然后取反, 然后 & N,即可得出结果。

5、位图思想

本质就是一个哈希表,每一个槽位都是一个比特位,用0/1表示数据。

6、提取一个数N二进制表示最右侧的1(lowbit)

解法:

N & -N

原理:-N 表示N按位取反+1,此时最右侧的1把N分成两个部分,右侧不变,左侧相反。

7、干掉一个数N二进制表示最右侧的1

解法:N & (N - 1)

原理:

N - 1需要向前借位,找到最右侧的1后,以最右侧的1为分界(包含),右侧相反,左侧不变。

8、位运算优先级

能加括号加括号。

9、异或(^)运算的运算律

本质就是消消乐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值