這是來自牛客網關於乙個二進位制的運算
我的思路為每次和1 2 4 .....進行按位與運算就可得到二進位制中1的個數
**如下
1/*2* *new coder ponint to offer 11
3* find bit 1 num of a nunber 4*/
56 #include 7 #include 8
9int find1num(int
number)
10
2122 i <<= 1; //
i = i * 223}
2425
return
count;26}
2728
intmain()
2941 }
下面是另外乙個大哥的思路,可以明顯的減少迴圈的次數。思路為每次將整數和整數-1的數做與運算這樣每次將整數最右邊的1變成0,這樣做的次數就是整數中含有1的個數,**如下:
1/*2* *new coder ponint to offer 11
3* find bit 1 num of a nunber
4* time best 5*/
67 #include 8 #include 9
10int find1num(int
number)
1120
21return
count;22}
2324
intmain()
2537 }
計算乙個整數二進位制中1的個數
這是來自牛客網關於乙個二進位制的運算 我的思路為每次和1 2 4 進行按位與運算就可得到二進位制中1的個數 如下 1 2 new coder ponint to offer 11 3 find bit 1 num of a nunber 4 56 include 7 include 8 9int f...
C 計算乙個整數二進位制位中1的個數
計算乙個整數二進位制位中1的個數。要求效率盡可能的高。且能正確求正數和負數的二進位制中1的個數。pragma once include include 計算乙個整數二進位制位中1的個數。要求效率盡可能的高。且能正確求正數和負數的二進位制中1的個數。32位,0 00000000 00000000 00...
整數二進位制中1的個數
輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。如果是0,返回0 如果是正整數,除二取餘法 如果是負數 3.1 如果是 2147483648 int表示最大絕對值的負數 其補碼是1000 0000 0000 0000 0000 0000 0000 0000,故返回 1 3.2 其他...