【专题总结】位运算

加速运算神器,位运算首先我们需要熟悉python的位运算符:a = 0011 1100b = 0000 1101位运算常用的运算符包括&(按位与), | (按位或),~(按位非),^(按位异或),<< (有符号左移位) ,>>(有符号右移位)。下面简单的记录一些运用位运算的例子:判断奇数偶数 (与 &) def isodd(x): r...
摘要由CSDN通过智能技术生成

加速运算神器,位运算

首先我们需要熟悉python的位运算符:
a = 0011 1100
b = 0000 1101
位运算常用的运算符包括&(按位与), | (按位或),~(按位非),^(按位异或),<< (有符号左移位) ,>>(有符号右移位)。
在这里插入图片描述

0.位运算的基本功能

  1. x^1s = ~x 实现数的位级反转。1s表示一串1
  2. 利用x^x = 0可以实现除重。保留唯一一个不重复的数字。
  3. 利用x&mask可以实现掩码,只保留想要的位置的数字。利用x|mask可以实现置位。
  4. n&(-n)可以实现得到n的最低一位1。其中-n的二进制是n的反码+1。0的反码是0000
  5. 移位运算包括算数和无符号,>>是算数,会补充相应的符号位。>>>只补0
  6. x&1可以用来判断奇偶。
  7. 使用x&(x-1)可以删除最低位的一个1
    下面简单的记录一些运用位运算的例子:

1. 判断奇数偶数 (与 &)

	def isodd(x):
		return True id (x&1) else False

2. 寻找数组中独一无二的数字 (异或 ^)

	def unique(nums):
		# nums: List
		ans = 0
		for i in nums:
			ans ^= i
		return ans 

3. 正反颠倒二进制位(leetcode190 )

在这里插入图片描述

	def reverseBits(n):
		res = 0
		count = 32
		while count>0:
			res <<= 1
			res += n&1
			count -= 1
			n >>= 1
		return int(bin(res), 2)
		

4. 汉明距离

在这里插入图片描述注意python的bin()函数返回的是字符串。如,bin(4)返回的是"0b100"

class Solution(object):
    def hammingDistance(self, x, y):
        """
        :type x: int
        :type y: int
        :rtype: int
        """
		return bin(x ^ y).count('1')

5. 交换两个内容(异或)

a = a ^ b
b = a ^ b
a = a ^ b
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值