统计整型参数的值为1的二进制位的个数
来源:互联网 发布:mac隐藏菜单栏 编辑:程序博客网 时间:2024/06/05 14:48
统计整型参数的值为1的二进制位的个数
1、讨论来源:
The C programming Language
2、代码:
#include <stdio.h>#include <stdlib.h>int bitCount(unsigned int n){ int i=0; for(;n;n>>=1) { if(n&1) { ++i; } } return i;}int bitCountFast(unsigned int n){ int i=0; for(;n;n&=(n-1)) { ++i; } return i;}int main(){ int n; scanf("%d",&n);//输入要计算的值 printf("bitCount:\t%d\n",bitCount(n)); printf("bitCountFast:\t%d\n",bitCountFast(n)); printf("Hello world!\n"); return 0;}
3、总结:
A、
将x 声明为无符号类型是为了保证将x 右移时,无论该程序在什么机器上运行,左边空出的位都用0(而不是符号位)填补。
B、
表达式x &= (x – 1)可以删除x中最右边值为1 的一个二进制位
C、上述引用都来自该书。对于bitCount()函数很正常,对于bitCountFast()函数,很明显加快了程序进行,时间复杂度明显减小。循环次数取决于二进制位1的个数,而bitCount()函数取决于UINT的位数。
D、表达式x &= (x – 1),(x – 1)每次将最右边的1变为0,紧邻右边0变为1,如100B-1B=011B,这样得来,每次表达式的执行就使得该x少了一个二进制位1。
4、结果:
0 0
- 统计整型参数的值为1的二进制位的个数
- bitcount函数统计其整数参数的值为1的二进制位的个数
- 统计整型值的二进制为1的个数
- 算法理解——统计二进制位1的个数
- 二进制位交换,反转,与统计1的个数
- 计算二进制位"1"的个数
- 计算二进制位'1'的个数
- 计算二进制位'1'的个数
- 返回数字中二进制位为'1'的个数
- 输入一个整型变量,求它二进制位中含有1的个数
- 计算二进制位中1的个数
- 整形数二进制位上1的个数
- 某数二进制位中1的个数
- 剑指offer之二进制位1的个数
- 一个整数二进制位中1的个数
- 统计整型数据二进制形式中1的个数
- 对值进行奇偶校验(判断一个值的二进制位模式中1的个数是否为偶数)
- 写一个函数,返回数字中二进制位为'1'的个数。
- pthred分离detach
- 猴子摘桃
- WML开发详细指南
- Categorical, Ordinal, Interval - 变量之间的区别
- 如何判断一个点是否在多边形内部ne?
- 统计整型参数的值为1的二进制位的个数
- 有趣的数字----腾讯2017暑期实习生编程题
- WAP中推送技术的分析与设计
- STM32—— AHB、APB详解
- STM32之SysTick(系统定时器)
- hdu 1561 树形dp
- 机器学习的算法(1):决策树之随机森林
- Java线程池知识必备
- 构建WAP应用程序开发环境