快速计算32位数中1的位数
程序员文章站
2022-05-28 20:01:58
一语句实现x是否为2的若干次幂的判断
#define is2*n(x) ((x & (x - 1))? 0 : 1)
int main(void)
{...
一语句实现x是否为2的若干次幂的判断
#define is2*n(x) ((x & (x - 1))? 0 : 1)
int main(void)
{
int m = 512;
cout << ((m & (m - 1)) ? false : true) << endl;
//即当m中只有一位为1时,才为若干次幂值
//若有两个及以上1,则(m & (m - 1))不为0,输出0,表示不为2的若干次幂
return(0);
}
类比:x为2的若干次幂即表示x中1的位数为1,题目转化为求一个32位数中1的位数,如果为1,则表示该数为2的若干次幂
同理也可以利用此规则求一个32位数中1的位数, (m & (m - 1)每次可用消除一个1,计算的次数即为1的个数
摘自 飞奔蜗牛的linux之旅。。。
#define is2*n(x) ((x & (x - 1))? 0 : 1)
int main(void)
{
int m = 512;
cout << ((m & (m - 1)) ? false : true) << endl;
//即当m中只有一位为1时,才为若干次幂值
//若有两个及以上1,则(m & (m - 1))不为0,输出0,表示不为2的若干次幂
return(0);
}
类比:x为2的若干次幂即表示x中1的位数为1,题目转化为求一个32位数中1的位数,如果为1,则表示该数为2的若干次幂
同理也可以利用此规则求一个32位数中1的位数, (m & (m - 1)每次可用消除一个1,计算的次数即为1的个数
摘自 飞奔蜗牛的linux之旅。。。
上一篇: C语言学习趣事_MSCRT_IO_SourceFile
下一篇: STL 应用之set
推荐阅读
-
快速计算32位数中1的位数
-
在Windows Server 2012中如何快速开关桌面上经典的计算机、我的文档等通用图标
-
python计算1~2008中0和1的个数
-
ASP计算str2在str1中出现的次数
-
输出1—999中能被3整除且至少有两位数字是5的所有整数及其个数
-
原码,反码,补码详解及如何计算二进制数中1的数量
-
计算机视觉中的深度学习10: 神经网络的训练1
-
for循环练习 打印4面三角形,99乘法表 ,打印1-100内整数 数字包含9跳过 每行输出5个 用空格分隔,按照从大到小的顺序输出4位数中的个位+百位=十位+千位的数字及个数
-
Task-1.1信息在计算机中的表示以及c++快速入门
-
<时间-1>计算机世界中的时间概念