[小米]懂二进制

时间限制: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 };