求整型数的二进制表示中1的个数。简单题目中蕴藏着人生真谛啊
来源:互联网 发布:淘宝ipad怎样清除缓存 编辑:程序博客网 时间:2024/04/29 22:32
如果出这道题目给你,你会怎么做?
大部分会很快的写错代码:
int getCount(int n)
{
int num=0;
while (n)
{
if (n & (n-1))
++num;
n>>=1;
}
return num;
}
如果这样写,肯定不行,只考虑了正数,如果是负数呢?如0x8000 0000呢,会陷入死循环的,负数右移高位填充1,最后变成了0xffff ffff。改进:可以用了临时变量flag。我们不对n做移位操作。
int getCount(int n)
{
int num=0;
int flag = 1;
while (flag)
{
if (n & flag)
{
++num;
}
flag <<= 1;
}
return num;
}
这样的话,通过左移flag,然后与n相与,可以得到n的二进制中1个个数。
如果不能使用辅助变量呢?
继续改进:
由于n可能为负数,我们不能进行右移操作。
上程序:
int getCount(int n)
{
int num=0;
int flag = 1;
while(n)
{
++num;
n = n & (n-1);
}
return num;
}
0 0
- 求整型数的二进制表示中1的个数。简单题目中蕴藏着人生真谛啊
- 整型数其二进制表示中”1“的个数
- 无符号整型数用二进制串表示,求此串中1的个数
- 求一个数的二进制表示中1的个数
- 求一个数的二进制表示中1的个数
- 求一个数二进制表示中1的个数
- 32位int整型数的二进制表示中1的个数
- 【二进制】求一个数的二进制表示中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中 1 的个数
- 求二进制数中1的个数
- 会话标识未更新
- virt_to_page和set_pte用法
- 7_C# 实现VMS客户端——窗体设计_无标题窗体设计
- 准备知识: Ubuntu12.04 编译 android2.3
- oracle数据库启动或停止,创建表空间、用户、分/权限的命令操作方法
- 求整型数的二进制表示中1的个数。简单题目中蕴藏着人生真谛啊
- drozer常见错误解决
- 移动开发工程师
- 写一封「用户体验」良好的求职邮件
- HTML5定制全选列头
- 外勤人员管理的问题如何解决
- 2014-9-10中午睡觉的一个梦
- 适配iPhone6和iPhone6 Plus
- CreateEvent函数在多线程中使用及实例