题目:
输入两个整数,求解他们的二进制表示中不同的位数有多少
思路:
先转化为二进制表示之后,以较短的表达式为主,计算对应位置上面的不同位数和,最后的结果再加上二者二进制表示长度的差值即可
下面是具体的实现:
#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:比较输入的两个整数的二进制不同位数
'''
def get_binary(num):
'''
得到一个整数的二进制表示列表
'''
binary=[]
while num!=0:
binary.append(str(num%2))
num/=2
return binary[::-1]
def find_difference_bits():
'''
输入:两个整数
输出:二进制差异位数
'''
num1=int(raw_input())
num2=int(raw_input())
num_binary1=get_binary(num1)
num_binary2=get_binary(num2)
max_len=max(len(num_binary1), len(num_binary2))
min_len=min(len(num_binary1), len(num_binary2))
need_len=max_len-min_len
count=0
for i in range(min_len):
if num_binary1[i]!=num_binary2[i]:
count+=1
print count+need_len
if __name__ == '__main__':
find_difference_bits()
结果如下:
'''
1999
2299
7
1356
4569
7
12
569
7
0
1
1
1000
9999
8
'''