6

我在变量“DATA”中有一个字节。我想从中提取 LSB 位并打印出来。我对 python 很陌生,我发现很多文章都有复杂的按位加法逻辑,而且所有这些都很难理解。我正在寻找一个简单的逻辑,就像我们对字符串所做的那样,例如 DATA[7:1] 请帮帮我......

4

3 回答 3

16

你的“字节”是一个int吗?如果是这样,只需按位 AND ( &) 与1(或者,如果你想更明确,二进制文字0b1)来获得最低有效位。

>>> x = 14
>>> x & 1
0
>>> x = 15
>>> x & 1
1

你的“字节”是一个bytes对象吗?如果是这样,只需对其进行索引并按位与。

>>> y = bytes([14, 15])
>>> y[0] & 1
0
>>> y[1] & 1
1
于 2014-01-24T19:59:06.907 回答
6

最简单也可能最快的:

least_significant_bit_of_x = x & -x

您可以在这里找到更多技巧:https ://www.informit.com/articles/article.aspx?p=1959565

虽然按位“黑魔法”的首选参考是 Knuth 的“计算机编程艺术,第 1 卷”。

于 2020-03-22T00:02:09.880 回答
-1

右移数字 n 并取最后一位和 1

num >> n &1
于 2017-06-29T01:23:58.143 回答