时间限制:1秒 空间限制:32768K 热度指数:35899
题目描述
世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
输入例子:
1999 2299
输出例子:
7思路:在二进制中,统计两个数的相应位不同可以利用异或,运算结果相同为0,不同为1,所以异或结果中1的个数就是不同的位数。
1 class Solution { 2 public: 3 /** 4 * 获得两个整形二进制表达位数不同的数量 5 * 6 * @param m 整数m 7 * @param n 整数n 8 * @return 整型 9 */ 10 int countBitDiff(int m, int n) { 11 int res=m^n; 12 int num=0; 13 14 while(res) 15 { 16 if((res&1)==1) 17 ++num; 18 res=res>>1; 19 } 20 21 return num; 22 23 } 24 };
时间: 2024-10-17 13:37:52