修學儲能 劍指offer之二進位制中1的個數

2021-10-24 16:23:55 字數 573 閱讀 6567

方法:用到的是位運算,計算機儲存資料都是用二進位制儲存的,有時候用位操作能起到很出色的表現。

public class solution 

flag=flag << 1;

}return count;

}

解析:定義乙個標誌位flag = 1,整數與標誌位進行與運算,因為 0與1結果為0,1與1結果為1,所以可以判斷出該整數二進位制形式的最後一位是不是1,與運算的結果不為零,則count++,每比完一次,標誌位flag向左做一次位運算,即0001->0010,然後再和整數做與運算,依次往下即可算出該整數二進位制表示形式1的個數。

public class solution 

return count;

}}

解析:乙個整數和自身減一進行與運算,得到的結果是將二進位制表示形式最右邊的1變為0,比如n = 10100110,則n - 1 = 10100101,n&(n-1) = 10100100,由此可以迴圈判斷整數到底含有多少1,迴圈條件為:while(n != 0),迴圈體內為:n = n&(n-1),通過不斷將1變為0,可以求得結果。

劍指Offer之二進位制中1的個數

題目描述 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。輸入 輸入可能包含多個測試樣例。對於每個輸入檔案,第一行輸入乙個整數t,代表測試樣例的數量。對於每個測試樣例輸入為乙個整數。n保證是int範圍內的乙個整數。輸出 對應每個測試案例,輸出乙個整數,代表輸入的那個數中1的個數。樣...

劍指offer之二進位制中1的個數

思路一 判斷整數二進位制表示中最後一位是不是1,然後將整數右移一位。重複這個步驟,直到整數變為零。1 如何判斷最後一位是不是1?將整數與1做 運算,結果為1,是。結果為0,不是。2 右移一位和將整數除以2在數學上等價,可以相互替換嗎?不能,除法的效率要比移位運算低得多。實際程式設計中盡可能用移位運算...

劍指Offer 擴充套件 二進位制 小公尺

世界上有10種人,一種懂二進位制,一種不懂。那麼你知道兩個int32整數m和n的二進位制表達,有多少個位 bit 不同麼?輸入例子 1999 2299 輸出例子 7 分析 將兩個整數逐位進行比較,累加不同位的個數,直至兩個數都為0.比較兩個數的最後一位,然後分別右移一位,直至兩個數都為0.defin...