统计二进制中1的个数(四种方案)
来源:互联网 发布:52pk软件下载 编辑:程序博客网 时间:2024/06/05 20:20
方案一:(只适合计算正数)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = 10; //10的二进制数为1010
int count = 0;
while (num)
{
if (num % 2 == 1) //从最高位开始除,余数为1则为1,余数为2则为0
{
count++; //余数为1时计数加1
}
num = num / 2; //除以2相当于右移一位,即丢掉计数过的
}
printf("%d\n", count);
system("pause");
return 0;
}
方案二:(正负数皆可)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = 10;
int count = 0;
while (num)
{
if ((num&1) == 1) //&按位与:有0则0,双1则1。即从最高位开始每位数字按位与1
{
count++;
}
num = num >> 1; //相当于除以2
}
printf("%d\n", count);
system("pause");
return 0;
}
方案三:(正负数皆可)
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned int num = -1; //-1的二进制数为11111111 11111111 11111111 11111111
int count = 0;
while (num)
{
if ((num&1) == 1)
{
count++;
}
num = num >> 1;
}
printf("%d\n", count);
system("pause");
return 0;
}
方案四:(正负数皆可)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = -1;
int count = 0;
while (num)
{
count++;
num = num&(num - 1);
}
printf("%d\n", count);
system("pause");
return 0;
}
结果:
num=10 //10的二进制数为1010
num=-1 //-1的二进制数为11111111 11111111 11111111 11111111
- 统计二进制中1的个数(四种方案)
- 统计二进制数中“1”的个数(懂二进制)
- 统计二进制中1的个数
- 统计二进制中1的个数
- 二进制中1的个数统计
- 统计二进制数中1的个数
- 统计二进制中1的个数
- 统计二进制正整数中1的个数
- 统计二进制数中1 的个数
- 统计二进制中1的个数
- 二进制中1的个数统计
- 统计二进制中1的个数
- 统计二进制数中1的个数
- OJ_0277.统计二进制中1的个数
- 统计二进制数中1的个数
- 快速统计二进制中1的个数
- (3)统计二进制数中1的个数
- 几种统计整数二进制表示中1的个数(算法小学习)
- c实现哈希查找
- 随笔提示文本
- 九九乘法表及其扩展
- 100~200之间的素数(及其四个优化方案)
- 交换两个变量的四种方案(面试题)
- 统计二进制中1的个数(四种方案)
- C注释转换到C++注释项目
- 冒泡排序(数组方法和指针方法)
- 单链表中查找倒数第K个节点
- 合并两个已序单链表
- 单链表的折半查找,冒泡排序,选择排序
- C++:继承
- UIWindow UIView UILable UIButton
- 指针和引用的区别