請設計乙個函式,輸入乙個數,輸出該數二級制表示1的個數
例 :9的二級制表示為1001 有2位是1
解題思路:
此題主要考點是二進位制的轉換和位運算的靈活使用。 我列舉一下三種方法實現:
方法一:消去1法(原理:n--1可以是n最低位的1為0,根據最低位的1後面都是0的特性,n &(n--1)可以消去最低位的1,直到消去最後乙個1的時候,結果為0)
方法二: 迴圈32次,利用位運算逐位與1比較比較法
方法三:轉換二進位制的時候,對餘數為1的情況進行累加
//方法一:消去1法
public
static
int f(int
n)
return
count;
}
//方法二:利用迴圈32次,逐位比較
public
static
int f2(int
n) }
return
count;
}
//方法三:轉2進製的時,對餘數為1的統計
public
static
int f3(int
n) }
return
count;
}
二進位制 二進位制中1的個數
題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...
二進位制中1的個數 二進位制中0的個數
1 題目 實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數,例如把9表示成二進位制是1001,有2位是1。因此如果輸入9,該函式輸出2。2 解法 解法 一 可能會引起死迴圈的解法 基本思路 先判斷整數二進位制表示中最右邊一位是不是1。接著把輸入的整數右移一位,此時原理處於從右邊數起的第二位...
二進位制中1的個數
這種方法速度比較快,其運算次數與輸入n的大小無關,只與n中1的個數有關。如果n的二進位制表示中有k個1,那麼這個方法只需要迴圈k次即可。其原理是不斷清除n的二進位制表示中最右邊的1或者最左邊的1,同時累加計數器,直至n為0 如7 0111 通過與 7 1 0110 與操作消去最最左邊的1,並累加計數...