28.整數的二進位制表示中1的個數(運算)
題目:輸入乙個整數,求該整數的二進位制表達中有多少個1。
例如輸入10,由於其二進位制表示為1010,有兩個1,因此輸出2。
分析:這是一道很基本的考查位運算的面試題。
包括微軟在內的很多公司都曾採用過這道題。
如果位數只有八位,使用查表法時間複雜度只有o(1)
//coder:lee,20120318
#include
#include
int numbersofone_1(int data)//考慮到了負數情形
return num;
}int numbersofone_2(int data)
return num;
}int main()
擴充套件:如何用乙個語句判斷乙個整數是不是二的整數次冪?
滿足numbersofone_1(data)等於1?
二進位制表示中 1 的個數
輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。需要注意的是 右移運算子是將乙個二進位制數按指定移動的位數向右移動。移動過程中,正數最高位補0,負數最高位補1,無符號數最高位補0。因此 右移整數,遇到負數的測試序列會導致陷入死迴圈 if n 1 1 n n 1 考慮左移 1,按位與...
二進位制表示中1的個數
輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。1 int cnt 0 2 int cnt 0 3 while a 分析一下 這段小小的 很是巧妙。如果乙個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都...
整數二進位制表示中1的個數
出自 題目 輸入乙個整數,求該整數的二進位制表達中有多少個1。例如輸入10,由於其二進位制表示為1010,有兩個1,因此輸出2。分析 這是一道很基本的考查位運算的面試題。包括微軟在內的很多公司都曾採用過這道題。乙個很基本的想法是,我們先判斷整數的最右邊一位是不是1。接著把整數右移一位,原來處於右邊第...