首页 > 代码库 > 二进制中有多少个1
二进制中有多少个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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。