python二进制操作_Python刷题:常用二进制操作(位运算)

本文介绍了Python中通过二进制位运算实现变量互换、清除最低位1、保留最低位1以及交换指定比特位等操作。通过实例代码详细解释了异或、与和取反等位运算的运用,展示了这些二进制操作在解决实际问题中的实用价值。
摘要由CSDN通过智能技术生成

1. 变量值互换

题目描述:在不使用第三个变量的前提下使用二进制的方式互换两个整型变量的值。

解题代码:

>>> a = 1234

>>> b = 5678

>>> a = a ^ b

>>> b = a ^ b

>>> a = a ^ b

>>> print(a, b)

5678 1234

总结:互换两个变量的值其实在Python中也可以很简单,比如a, b = b, a,但是,如果要使用二进制的方式来进行操作的话,可以利用“异或”操作的特性,从这个算法也可以得到“异或”操作这样一个特性:两个整型值“异或”可以得到一个中间值,这个中间值和原先的任何一个值再次进行“异或”操作就可以得到另一个变量的值。

2. 最低位的1清零

题目描述:对于一个整型值,在二进制表示中,将其最低位的1变为0,其他位置的值不变。

解题代码:

>>> x = 124

>>> bin(x)

'0b1111100'

>>> bin(x&(x-1))

'0b1111000'

总结:这也是一个常用的二进制操作,使用公式x&(x-1)即可,&为二进制的“与”操作。

3. 获取最低位的1

题目描述:对于一个整型值,在二进制表示中,只保留最低位的1,其余位置的值全部变为0。

解题代码:

>>> x = 86

>>> bin(x)

'0b1010110'

>>> bin(x&~(x-1))

'0b10'

总结:这也是一个常用的二进制操作,使用公式x&~(x-1)即可,$为二进制的“与”操作,~为二进制的“取反”操作。

4. 交换指定位置的两个比特位

题目描述:对于一个整型值,在二进制表示中,交换指定位置的两个比特位的值。

解题代码:

def swap_bit(x, i, j):

# 如果第i位和第j位是相同的,则没必要交换

if ((x >> i) & 1) != ((x >> j) & 1):

x ^= ((1 << i) | (1 << j))

return x

x = 0b0101

i = 0

j = 1

print(bin(swap_bit(x, i, j))) # 输出:0b110

总结:这也是一个常用的二进制操作,使用公式x ^= ((1<

题目及解题算法来自:书籍《Python程序员面试宝典》。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值