二進制位數的比較

題目:世界上有10種人,一種懂二進制,一種不懂。那麼你知道兩個int32整數m和n的二進制表達,有多少個位(bit)不同麼?

解題思路:
將m和n分別與1相與,如果得到的兩個結果不相同,則說明該位是不相同的,將結果加1;然後分別將m與n右移一位,如此重複,直到m和n兩者當中有一個爲0,則退出循環。如果m或者n不爲0,則將不爲0的那個數與1相與,如果不爲0,則將結果加1.如此直到該數爲0爲止


public int countBitDiff(int m, int n) {
       int result=0;
        while(m>0&&n>0){
        int m1=m&1;
        int m2=n&1;
        if(m1!=m2){
        result++;
        }
        m=m>>1;
        n=n>>1;
        }
        while(m!=0){
        int m1=m&1;
        if(m1!=0){
        result++;
        }
       
        m=m>>1;
        }
        while(n!=0){
        int n1=n&1;
        if(n1!=0){
         result++;
        }
       
        n=n>>1;
        }
        return result;
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章