码迷,mamicode.com
首页 > 其他好文 > 详细

二进制中有多少个1

时间:2017-05-02 13:58:32      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:cti   esc   class   .com   bit   hal   标签   problem   return   

二进制中有多少个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

标签:cti   esc   class   .com   bit   hal   标签   problem   return   

原文地址:http://www.cnblogs.com/libaoquan/p/6795500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!