計算乙個整數二進位制中1的個數

2021-07-14 14:15:52 字數 785 閱讀 1775

這是來自牛客網關於乙個二進位制的運算

我的思路為每次和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 其他...