题解 | 二进制不同位数
二进制不同位数
https://www.nowcoder.com/practice/daf9032926614dab91ca624a7759a868
m, n = map(int, input().split())
count = 0
i=0
#法1:
# # 循环条件改为:m和n右移i位后至少一个不为0(遍历所有有效位)
# while (m >> i) != 0 or (n >> i) != 0:
# # 提取m、n第i位的二进制值(0或1)
# bit_m = (m >> i) & 1
# bit_n = (n >> i) & 1
# if bit_m != bit_n: # 直接判断两位是否不同,更直观
# count += 1
# i += 1
# print(count)
#法2:
# xor = m^n
# while xor:
# #统计异或中1的个数
# count+=xor&1
# xor=xor>>1
# print(count)
#法3:内置函数
print(bin(m^n).count("1"))

查看9道真题和解析