1. 程式人生 > >[小米]懂二進制

[小米]懂二進制

lan pub question n) 整數 div ntb 多少 int

時間限制: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 };

[小米]懂二進制