二进制中1的个数
来源:互联网 发布:查微信聊天记录的软件 编辑:程序博客网 时间:2024/06/14 09:57
两种解法:
第一种:常规解法
使用flag = 1这个数每次与原来的整数做与运算,然后向左移动的方式计算1的个数
例如:
#include <stdio.h>
int Numbercount(int n)
{
int count = 0;
unsigned int flag = 1;
while(flag)
{
if(n & flag)
count++;
flag = flag << 1;
}
return count;
}
int main(void)
{
int num = Numbercount(4);
printf("%d\n", num);
return 0;
}
第二种:创新性解法
把一个整数减去1,再与原来的整数做与运算,会把这个整数最右边的一个1变为0
例如:
#include <stdio.h>
int Numbercount(int n)
{
int count = 0;
while(n)
{
count++;
n = (n-1) & n;
}
return count;
}
int main(void)
{
int num = Numbercount(5);
printf("%d\n", num);
return 0;
}
阅读全文
0 0
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 字符串数据结构模板整理
- CIA1 皇宫看守(树形dp)
- C/C++ 之 指针函数 和 函数指针
- java 使用POI批量导入excel数据
- Kamailio glossary & misc(持续更新)
- 二进制中1的个数
- Java内存泄漏
- 1.1 数据的接收 之 初来乍到
- UVa11624-Fire!(bfs)
- 精通CSS、PHP、C、C++、C#、Java、Ruby、python、Objective-C、Pascal、spss、sas
- 集合源码学习(一):Collection
- 方法的重写
- 【java】Object的公用方法
- Spark是什么(初识)