python中二进制格式的按位运算

时间:2017-04-27 10:26:09

标签: python bitwise-operators python-3.6

我的程序有两个名为IPMASK的变量。这些变量包含二进制格式的数字,例如:IP = "11100001"MASK = "11000000"

我正在执行AND这样的操作: result = IP & MASK。 这应该给出:11000000,而是返回10573888。 如何进行AND操作并将数字保留为十进制?

我查看了stackoverflow.com,但我没有发现任何类似的情况,我遇到的唯一事情是手动执行此操作的“算法”。

2 个答案:

答案 0 :(得分:1)

您输入的是十进制数字。位模式不是您所期望的:

>>> bin(11100001)
'0b101010010101111101100001'
>>> bin(11000000)
'0b101001111101100011000000'
>>> bin(11000000 & 11100001)
'0b101000010101100001000000'
>>> bin(10573888)
'0b101000010101100001000000'

要使用二进制数,请使用0b前缀:

>>> bin(0b11000000 & 0b11100001)
'0b11000000'

答案 1 :(得分:0)

IP = 0b11100001
MASK = 0b11000000
Result = bin(IP and MASK)
print(Result)

返回0b11000000

使用0b进行预先修复是一种常见方式,表示数字是二进制格式。类似地,0x通常表示十六进制数。