我正在查看一段代码并遇到了这些行:
1 & 0x44
1 & 0x11
1 & 0x85
1 & 0x22
1 & 0x20
我已经在 Python 中运行它并看到数字在变化,但我不明白它在做什么。有人可以向我解释一下它在做什么吗?
谢谢
请您参考如下方法:
这里的&是一个按位运算符,这意味着查看二进制格式中涉及的数字以了解正在执行的操作更有意义。
因此,对于十进制的 65,将其转换为二进制得到“1000001”。
其他数字都是十六进制的,转换如下:
0x10 -> 10000
0x08 -> 01000
0x04 -> 00100
0x02 -> 00010
0x01 -> 00001
如你所见,65 & 0x01的结果是1,实现方式如下:
1000001 65 in binary
& 0000001 0x10 in binary
---------
0000001 Giving 1
---------
AND 的逻辑:
AND
0 0 | 0
0 1 | 0
1 0 | 0
1 1 | 1
代码正在尝试确定是否已设置单个位。
关于 bitwise operations 的维基百科文章应该可以帮助您理解这个过程。
