例如,在C中,我可以将32位无符号值中的第#10位清零,如下所示:
unsigned long value = 0xdeadbeef;
value &= ~(1<<10);我如何在Python中做到这一点?
发布于 2008-09-29 06:45:34
Python in上的逐位操作与C中的工作方式非常相似。Python中的&、|和^操作符的工作方式与C中的相同。~操作符的工作方式与C中的带符号整数相同,即~x计算-x-1。
因为Python整数不是固定宽度的,所以必须在一定程度上注意左移位。使用位掩码获取低位。例如,要做相当于移位的32位整数做(x << 5) & 0xffffffff。
发布于 2008-09-29 06:34:18
value = 0xdeadbeef
value &= ~(1<<10)发布于 2018-04-20 21:28:47
可以用作示例的一些常见位操作:
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)
3https://stackoverflow.com/questions/147713
复制相似问题