求一个整数的二进制中1的个数
来源:互联网 发布:埋雷软件 编辑:程序博客网 时间:2024/05/20 00:14
题目:实现一个函数,输入一个整数,输出该整数二进制中1的个数
代码一:
int Find(int j)
{
int count = 0;
while (j)
{
if (j & 1)
count++;
j = j>>1;
}
return count;
}
分析:
如果输入的整数是正数,那么可以输出结果。但是如果输入的是负数,要保证移位后的还是负数,所以移位后最高位需要设为1。如果一直做右移操作就会,调试的时候就会发现这个数就会变成一个很大的数,进入死循环。
代码二:
int Find(int j)
{
unsigned int k = 1;
int count = 0;
while (k)
{
if (j&k)
count++;
k = k << 1;
}
return count;
}
分析:
为了保证输入数据移位的时候不会出现死循环问题,就让k去移位,在和输入数据的每一位去按位与。但是这个代码的缺点就是,输入数据的二进制有多少位就要进行多少次的位操作。
代码三:
int Find(int j)
{
int count = 0;
while (j)
{
++count;
j = j&(j - 1);
}
return count;
}
分析:
把一个整数减去1,再和原来的整数做与操作,会把该整数最右边的1变成0,那么有多少个1就能做多少次这样的操作,这样就减少了位操作的次数。
阅读全文
0 0
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数(转)
- 求一个整数的二进制中1的个数(转)
- 求一个整数的二进制数中1的个数
- 求一个整数的二进制表示中1的个数
- Java求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- [Kotlin]实现八大排序算法·已封装·代码实例
- TensorFlow实现案例汇集:代码+笔记
- (7)nodejs学习---之模板引擎jade&&ejs
- Java中equals和==的区别
- Ring Buffer (circular Buffer)环形缓冲区简介
- 求一个整数的二进制中1的个数
- ADS-B及雷达显示终端7.1
- 检查点
- /* compiled code */ ?
- 机器学习资料搜集
- USACO-2017-FEB-金组 Why Did the Cow Cross the Road III
- iptables&firewalld
- JavaScript实现[网易云音乐Web站登录窗口]拖拽功能
- Java之hashcode方法