常见位运算总结

一.基础位运算

		  (1)<< 向左位移,eg : 1 << x : 表示1向左位移x位
		  (2)>> 向右位移,eg : 1 >> x : 表示1向右位移x位
		  (3)~ 按位取反
	      (4)& 有0就是0 (按位与)
	      (5)|   有1就是1(按位或)
	      (6)^ 相同为0,相异为1 /  无进位相加 (按位异或)

^时的情况

二.确定,修改,某个数中的第x位

  1. 给一个数n,确定他的二进制表示中的第x位是0还是1?
    (n >>x) & 1,若结果为0,则该位置为0,反之为1

  2. 将一个数n的二进制表示的第x位修改成1
    n |= (1<<x)

  3. 将一个数n的二进制表示的第x位修改成0
    n &= (~(1<<x))

三.提取,干掉最右侧的1

  1. 提取一个数(n)二进制表示中最右侧的1
    n & -n
    tips: -n 从最右侧的1(不包1),左边的区域全部变成相反(-n = ~n +1)

  2. 干掉一个数(n)二进制表示中最右侧的1
    n & (n-1)
    tips:(n-1)将最右侧的1,右边的区域(包含1)全部变成相反

四.异或(^)运算的运算律

  1. a ^ 0 = a
  2. a ^ a = 0
  3. a ^ b ^ c = a ^(b ^ c)

五.结语

位运算的思想与哈希表有些相似,不过一个是用比特位,一个使用哈希数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值