Python在两个二进制数上使用AND逻辑生成新的二进制数
我试图使用AND函数从另外两个二进制数生成一个新的二进制数。但是,我一直得到000000000000作为输出。有人能指出我的代码哪里出错了吗Python在两个二进制数上使用AND逻辑生成新的二进制数,python,Python,我试图使用AND函数从另外两个二进制数生成一个新的二进制数。但是,我一直得到000000000000作为输出。有人能指出我的代码哪里出错了吗 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 s
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
模块:。您正在将字符串与数字进行比较。将最后一行更改为,例如:
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
模块:。python有一个标准模块,您应该在zip(b1,bi1)中为x,y使用:print(andop(x,y),end='')
而不是自己实现它,使用内置的二进制“and”操作符,&
可能会更容易。python有一个标准模块,您应该在zip(b1,bi1)中为x,y使用:print(andop(x,y),end='')
而不是自己实现它,使用内置的二进制“和”操作符,&
可能会更容易。使用现成的整数,无需对数字进行迭代。我认为您的输入应该是subm[0]
而不是ip[1]
inbi1=int(ip[1])
我认为您的输入应该是subm[0]
而不是ip[1]
inbi1=int(ip[1])