二进制中有多少个1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二进制中有多少个1相关的知识,希望对你有一定的参考价值。

二进制中有多少个1 

计算在一个 32 位的整数的二进制表式中有多少个 1.

样例

给定 32 (100000),返回 1

给定 5 (101),返回 2

给定 1023 (111111111),返回 9

挑战 

If the integer is n bits with m 1 bits. Can you do it in O(m) time?

标签 
 
 1 class Solution {
 2 public:
 3     /**
 4      * @param num: an integer
 5      * @return: an integer, the number of ones in num
 6      */
 7     int countOnes(int num) {
 8         // write your code here
 9         int num_bit[32]={0};
10         int one_count = 0;
11         int i,num2 = num;
12         //  负数转正,符号位变1
13         if(num < 0)   {
14             num = num * -1;
15             num_bit[31] = 1;
16         }
17         //  十进制转二进制
18         for(i=0; num; i++)  {
19             num_bit[i] = num%2;
20             num /= 2;
21         }
22         //  负数原码转补码
23         if(num2 < 0) {
24             for(i=30; i>=0; i--)  {
25                 if(num_bit[i] == 1)
26                     break;
27                 num_bit[i] = 1;
28             }
29         }
30         for(i=0; i<32; i++)  {
31             if(num_bit[i] == 1)
32                 one_count++;
33         }
34         return one_count;
35     }
36 };

 

以上是关于二进制中有多少个1的主要内容,如果未能解决你的问题,请参考以下文章

二进制中有多少个1

365 二进制中有多少个1

求二进制数中有多少个1

模拟赛01 总结

如何计算bash中一列数据中的连续重复次数?

13 个非常有用的 Python 代码片段