如何从 8 位中取出第 3 位

How to take bit number 3 from 8 bits

我有十六进制的:08 这是二进制的:0000 1000(位位置:7,6,5,4,3,2,1,0)

现在我想在 python 中制作一个位掩码,所以我有位位置 3。
这里的示例 1 或更好(“”中的那个):0000 "1"000

怎么办只有这一点?

谢谢

右移位索引使该位位于第 0 个位置,然后与 1 进行 AND 运算以隔离它。

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

输出1

你可以这样做:

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 上的文档可能会有所帮助。