python 中二进制格式的按位运算
Bitwise operations in binary format in python
我的程序有两个名为:IP
和 MASK
的变量。这些变量包含二进制格式的数字,例如:IP = "11100001"
和 MASK = "11000000"
.
我正在执行这样的 AND
操作:
result = IP & MASK
。
这应该给出:11000000
,而不是 returns 10573888
。
如何进行 AND
操作并保持十进制数字?
我环顾四周 whosebug.com 但我没有发现任何类似的情况,我唯一遇到的是手动执行此操作的 "algorithm"。
您输入的是十进制数字。位模式不是您所期望的:
>>> bin(11100001)
'0b101010010101111101100001'
>>> bin(11000000)
'0b101001111101100011000000'
>>> bin(11000000 & 11100001)
'0b101000010101100001000000'
>>> bin(10573888)
'0b101000010101100001000000'
要使用二进制数,请使用 0b
前缀:
>>> bin(0b11000000 & 0b11100001)
'0b11000000'
IP = 0b11100001
MASK = 0b11000000
Result = bin(IP and MASK)
print(Result)
Returns 0b11000000
前缀 0b
是表示数字为二进制格式的常用方法。同样,0x
通常表示一个十六进制数。
我的程序有两个名为:IP
和 MASK
的变量。这些变量包含二进制格式的数字,例如:IP = "11100001"
和 MASK = "11000000"
.
我正在执行这样的 AND
操作:
result = IP & MASK
。
这应该给出:11000000
,而不是 returns 10573888
。
如何进行 AND
操作并保持十进制数字?
我环顾四周 whosebug.com 但我没有发现任何类似的情况,我唯一遇到的是手动执行此操作的 "algorithm"。
您输入的是十进制数字。位模式不是您所期望的:
>>> bin(11100001)
'0b101010010101111101100001'
>>> bin(11000000)
'0b101001111101100011000000'
>>> bin(11000000 & 11100001)
'0b101000010101100001000000'
>>> bin(10573888)
'0b101000010101100001000000'
要使用二进制数,请使用 0b
前缀:
>>> bin(0b11000000 & 0b11100001)
'0b11000000'
IP = 0b11100001
MASK = 0b11000000
Result = bin(IP and MASK)
print(Result)
Returns 0b11000000
前缀 0b
是表示数字为二进制格式的常用方法。同样,0x
通常表示一个十六进制数。