如何从8位中取出3位

时间:2019-05-07 08:18:20

标签: python bitmask

我用十六进制表示:08 这是二进制文件:0000 1000(位:7,6,5,4,3,2,1,0)

现在我想在python中制作一个位掩码,所以我的位置为3。
例如1或更高(例如“”中的一个):0000 "1"000

只有这一点我该怎么办?

谢谢

2 个答案:

答案 0 :(得分:7)

向右移动位索引以使该位在第0位,然后与1进行“与”将其隔离。

val = 0b01001000  # note the extra `1` to prove this works
pos = 3
bit = (val >> pos) & 1
print(bit)

输出1

答案 1 :(得分:4)

您可以这样做:

def get_bit(n, pos):
    return (n >> pos) & 1

res = get_bit(n=8, pos=3) 
# 1

将数字n左移pos位(>> pos),然后掩盖其余部分(& 1)。

Bitwise Operations on Integer Types上的文档可能会有帮助。