Python 在两个二进制数上使用 AND 逻辑来生成新的二进制数

  • 本文关键字:二进制数 AND 两个 Python python
  • 更新时间 :
  • 英文 :


>我正在尝试使用 AND 函数从另外两个二进制数生成一个新的二进制数。但是,我一直得到 0000000000000 作为输出。任何人都可以发现我在代码中出错的地方吗?

def andop(x,y):
if x == 1 and y == 1:
return 1
else:
return 0
v =  input("Enter IP address: ")
ip = v.split(".")
b1 = format(int(ip[0]),'08b')
x =  input("Enter submask address: ")
subm = x.split(".")
bi1 = format(int(subm[0]),'08b')
for x in b1:
for y in bi1:
print(andop(x,y),end = '')

您正在将字符串与数字进行比较。将最后一行更改为例如:

print(andop(int(x),int(y)),end = '')

另请注意,二进制"and"操作是内置的。您可以轻松地以更清晰的方式重写此程序:

v =  input("Enter IP address: ")
ip = v.split(".")
b1 = int(ip[0])
x =  input("Enter submask address: ")
subm = x.split(".")
bi1 = int(subm[0])
print(format(b1 & bi1, 'b'))

最后,要使用 IP 地址,有一个ipaddress模块:https://docs.python.org/3/library/ipaddress.html。

最新更新