本文共 612 字,大约阅读时间需要 2 分钟。
编程题:聪明地了解二进制
时间限制:1秒
空间限制:32768K世界上分为两种人:懂二进制和不懂二进制。那么你知道,如何计算两个32位整数m和n的二进制表示中有多少个位是不同的呢?
输入示例:1999 2299
输出示例:7预示代码:
int countBitDiff(int m, int n) { int k = 0; for(int i = 0; i < 32; i++) { if((m & 1) != (n & 1)) k++; m >>= 1; n >>= 1; } return k; }
这个问题要求我们比较两个32位整数的二进制表示中不同位的个数。解决方法是逐位对比每一位是否不同,然后统计总数。
m & 1
和n & 1
),快速获取二进制的最低有效位。代码依次遍历每一位:
通过这种方式,我们可以快速准确地计算出两个整数的二进制位差。
转载地址:http://qqnyk.baihongyu.com/