首页 > 代码库 > 求一个数的二进制数中所含1的个数的代码实现
求一个数的二进制数中所含1的个数的代码实现
#include<stdio.h> int numberOf1_solution1(int n)/*将一个正数以此向右移一位,与1做与运算,直到这个数为零*/ { int count = 0; while (n) { if (n&1) count++; n=n >> 1; } return count; } int numberOf1_solution2(int n)/*将1以此向右移动以为,与一个数(正负数均可)做与运算,直到1出现上溢为止*/ { int count = 0, i = 1; while (i) { if (n&i) count++; i = i << 1; } return count; } int numberOf1_solution3(int n)/*将一个数减去1后再与本身相与,便可减少一个1,利用这个原理求1的个数*/ { int count = 0; while (n) { n = (n - 1)&n; count++; } return count; } int main() { printf("%d\n",numberOf1_solution3(5)); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。