题解 | 二进制不同位数

二进制不同位数

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"))

全部评论

相关推荐

11-06 23:30
已编辑
华中师范大学 后端工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务