首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中操作位?

问如何在Python中操作位?
EN

Stack Overflow用户
提问于 2008-09-29 06:31:27
回答 8查看 56.4K关注 0票数 40

例如,在C中,我可以将32位无符号值中的第#10位清零,如下所示:

代码语言:javascript
复制
unsigned long value = 0xdeadbeef;
value &= ~(1<<10);

我如何在Python中做到这一点?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-09-29 06:45:34

Python in上的逐位操作与C中的工作方式非常相似。Python中的&、|和^操作符的工作方式与C中的相同。~操作符的工作方式与C中的带符号整数相同,即~x计算-x-1。

因为Python整数不是固定宽度的,所以必须在一定程度上注意左移位。使用位掩码获取低位。例如,要做相当于移位的32位整数做(x << 5) & 0xffffffff。

票数 54
EN

Stack Overflow用户

发布于 2008-09-29 06:34:18

代码语言:javascript
复制
value = 0xdeadbeef
value &= ~(1<<10)
票数 13
EN

Stack Overflow用户

发布于 2018-04-20 21:28:47

可以用作示例的一些常见位操作:

代码语言:javascript
复制
def get_bit(value, n):
    return ((value >> n & 1) != 0)

def set_bit(value, n):
    return value | (1 << n)

def clear_bit(value, n):
    return value & ~(1 << n)

用法如

代码语言:javascript
复制
>>> get_bit(5, 2)
True
>>> get_bit(5, 1)
False
>>> set_bit(5, 1)
7
>>> clear_bit(5, 2)
1 
>>> clear_bit(7, 2)
3
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/147713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档