计算一个整数二进制位中1的个数
来源:互联网 发布:淘宝买手机售后保修 编辑:程序博客网 时间:2024/05/17 21:47
题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如8的二进制形式是1000,有1位是1,所以输入8,该函数应该输出1
可以看出这是一道考察位运算的题目。
(1)很简单的思路来判断一个数二进制位是不是1,先判断该数右边一位是否为1,然后将该数右移一位,采用相同逻辑判断是否为1,直到该数为0则停止。判断某位是否为1,我们可以想到很简单的办法就是与上1,判断&1后的结果是否为1。基于这个思路,我们可以很轻松的写出如下代码
可以发现这种解法当遇到负数时,就会陷入死循环
(2)不能将输入的数右移,那我们可以考虑将1不断左移,来判断
可以看出这种解法循环的次数是32次,效率较低
(3)把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变为0,那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。基于这种思路可以写出如下的代码
基于这种思路,循环的次数正好是数据中1的个数,有效减少了循环次数
阅读全文
0 0
- 17_7_20:计算一个整数二进制位中1的个数。
- 计算一个整数二进制位中1的个数
- 计算一个整数二进制位中1的个数
- C/计算一个整数二进制位中1的个数
- 计算一个整数二进制位中1的个数
- 计算一个整数二进制位中1的个数
- 计算一个整数二进制位中1的个数
- 一个整数二进制位中1的个数
- 挑战面试编程:计算整数二进制位中1的个数
- 元素出栈、入栈顺序的合法性/计算一个整数二进制位中1的个数。
- 剑指offer 10----计算一个整数二进制位中1的个数
- day08之元素出栈、入栈顺序的合法性+计算一个整数二进制位中1的个数
- 计算二进制位中1的个数
- 计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。
- 计算一个整数中1的个数...
- 计算二进制位"1"的个数
- 计算二进制位'1'的个数
- 计算二进制位'1'的个数
- [译] TF-api(3) tf.nn.softmax_cross_entropy_with_logits
- MyEclipse下安装TFS插件
- python实现将将输入的可约分数化简为不可约分数
- 查看处理器是否支持64位系统
- android开发 自定义View实现TextView文本间距
- 计算一个整数二进制位中1的个数
- linux更换内核
- String类的相关用法
- CS231n课程笔记翻译:Python Numpy教程
- 字符串必须包含大写字母,小写字母和数字
- linux配置软raid/故障模拟
- 使用ffmpeg将mp4文件中的h264码流转为raw h264文件格式或ts文件格式
- const放在函数前后的区别
- React总结11:ref的用法