Python代码-可能是十六进制?

Python代码-可能是十六进制?,python,python-3.x,Python,Python 3.x,我正在浏览一段代码,遇到以下几行代码: 1 & 0x44 1 & 0x11 1 & 0x85 1 & 0x22 1 & 0x20 我用Python运行了它,看到数字在变化,但我不明白它在做什么。有人能给我解释一下它在干什么吗 谢天谢地,执行按位and运算,如果x和y的对应位为1,则输出的每一位为1,否则为0。比如说 65 & 0x1 给予 因为它在上执行按位操作 1000001 & 0000001 &执行按位and运算,如果x和y的对

我正在浏览一段代码,遇到以下几行代码:

1 & 0x44
1 & 0x11
1 & 0x85
1 & 0x22
1 & 0x20
我用Python运行了它,看到数字在变化,但我不明白它在做什么。有人能给我解释一下它在干什么吗

谢天谢地,执行按位and运算,如果x和y的对应位为1,则输出的每一位为1,否则为0。比如说

65 & 0x1
给予

因为它在上执行按位操作

1000001 & 0000001
&执行按位and运算,如果x和y的对应位为1,则输出的每一位为1,否则为0。比如说

65 & 0x1
给予

因为它在上执行按位操作

1000001 & 0000001
&运算符执行按位AND运算。简而言之,一个按位and取两个二进制数,并输出一个二进制数,其中每个位设置为1,如果其他两个数字中的每个相同位置也设置为1

例:

前缀为0x的数字是十六进制表示

那么你的情况呢

65   =      1000001
0x10 = 16 = 0010000
0x8  = 8  = 0001000
0x4  = 4  = 0000100
0x2  = 2  = 0000010
0x1  = 1  = 0000001
因此,按位和输出是

65 & 0x10 = 0
65 & 0x8  = 0
65 & 0x4  = 0
65 & 0x2  = 0
65 & 0x1  = 1
&运算符执行按位AND运算。简而言之,一个按位and取两个二进制数,并输出一个二进制数,其中每个位设置为1,如果其他两个数字中的每个相同位置也设置为1

例:

前缀为0x的数字是十六进制表示

那么你的情况呢

65   =      1000001
0x10 = 16 = 0010000
0x8  = 8  = 0001000
0x4  = 4  = 0000100
0x2  = 2  = 0000010
0x1  = 1  = 0000001
因此,按位和输出是

65 & 0x10 = 0
65 & 0x8  = 0
65 & 0x4  = 0
65 & 0x2  = 0
65 & 0x1  = 1
这里是一个位运算符,这意味着查看二进制格式中涉及的数字以了解正在执行的操作更有意义

对于65位小数,将其转换为二进制,得到“1000001”

其他数字为十六进制,转换如下:

0x10 -> 10000
0x08 -> 01000
0x04 -> 00100
0x02 -> 00010
0x01 -> 00001
  1000001      65 in binary
& 0000001    0x10 in binary
---------
  0000001    Giving 1
---------
正如您所看到的,65&0x01的结果是1,其实现方式如下:

0x10 -> 10000
0x08 -> 01000
0x04 -> 00100
0x02 -> 00010
0x01 -> 00001
  1000001      65 in binary
& 0000001    0x10 in binary
---------
  0000001    Giving 1
---------
其逻辑是:

AND
0 0 | 0
0 1 | 0
1 0 | 0
1 1 | 1
代码试图确定是否设置了单个位

Wikipedia上的文章应该可以帮助您理解这个过程。

这里是一个位运算符,这意味着查看二进制格式中涉及的数字以了解执行的是什么操作更有意义

对于65位小数,将其转换为二进制,得到“1000001”

其他数字为十六进制,转换如下:

0x10 -> 10000
0x08 -> 01000
0x04 -> 00100
0x02 -> 00010
0x01 -> 00001
  1000001      65 in binary
& 0000001    0x10 in binary
---------
  0000001    Giving 1
---------
正如您所看到的,65&0x01的结果是1,其实现方式如下:

0x10 -> 10000
0x08 -> 01000
0x04 -> 00100
0x02 -> 00010
0x01 -> 00001
  1000001      65 in binary
& 0000001    0x10 in binary
---------
  0000001    Giving 1
---------
其逻辑是:

AND
0 0 | 0
0 1 | 0
1 0 | 0
1 1 | 1
代码试图确定是否设置了单个位

维基百科关于的文章应该可以帮助你理解这个过程