如何在Python中操作位?

42 投票
9 回答
70352 浏览
提问于 2025-04-11 09:23

在C语言中,我可以通过下面的方式将一个32位无符号数的第10位清零:

unsigned long value = 0xdeadbeef;
value &= ~(1<<10);

那么在Python中我该怎么做呢?

9 个回答

13

这里有一些常见的位操作,可以作为示例:

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)

使用方法,比如:

>>> 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
17
value = 0xdeadbeef
value &= ~(1<<10)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

59

在Python中,位运算和C语言中的用法很相似。比如,&(与)、|(或)和^(异或)这些运算符在Python里的表现和C语言是一样的。至于~运算符,它的作用也和C语言中的有符号整数一样;也就是说,~x的结果是-x-1

在进行左移操作时要稍微小心,因为Python中的整数没有固定的位数。你可以使用位掩码来获取低位的数值。例如,如果你想模拟一个32位整数的左移操作,可以这样写:(x << 5) & 0xffffffff

撰写回答