這個題目有很多種解法,我們可以一一枚舉出來
第一種分析:在32位的二進位制中,給出乙個1001010的一連串的數,我們就可以聯想到與 1& 得出想要的結果。
移動可分為兩種,可以將二進位制數向右移動,或者將1向左移動
向右移動時&出來的得數要和1向右的得數相等就證明有1。
scanner sc=new scanner(system.in);
int s=sc.nextint();
//轉換為二進位制
system.out.println(integer.tobinarystring(s));
int count=0;
for(int i=0;i<32;i++)
} system.out.println(count);
第二種方法
逐個減一
scanner sc=new scanner(system.in);
int s=sc.nextint();
//轉換為二進位制
count=0;
while(s!=0)
system.out.println(count);
}
第三個方法
乙個二進位制除以乙個2,原來的數字就會減去乙個0,如果有餘數那麼當前位置就為1。
static int count(int s1)
s1=s1/2;
} return num;
}
還有查表法,還有分支操作等等,感興趣可以自己去查詢。
希望大家能看的懂,不懂可以問我很樂意為你們服務。
求乙個數2進製中1的個數
include include int count one bits unsigned int value int i 0 int count 0 for i 0 i return count int main 方法2 進行32次迴圈,把這個數 1,把結果加到計數器,把這個數右移一位,直到退出迴圈。...
查詢輸入整數二進位制中1的個數
譬如 輸入5 5的二進位制為101,輸出2 輸入乙個整數 計算整數二進位制中1的個數 常規做法,迴圈判斷2出現的次數,通過對2取餘看第 i 位是否為1。注意!要用unsigned型別,否則n n 2在負數的情況下只有0 右移會出錯 include using namespace std int ma...
查詢輸入整數二進位制中1的個數
請實現如下介面 public static intfindnumberof1 int num 譬如 輸入5 5的二進位制為101,輸出2 輸入描述 輸入乙個整數 輸出描述 計算整數二進位制中1的個數 解題思路 本題是計算乙個數二進位制表示中1的個數,通過 n i 1可以獲取第i位的二進位制值,每次n...