`
yaojingguo
  • 浏览: 208126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Count bit

 
阅读更多

#include <stdio.h>

int count_bit1(int num) {
 int count = 0;
 while (num > 0) {
	 num &= (num - 1);
	 count++;
 }
 return count;
}

int count_bit2(unsigned int num) {
	unsigned int mask1  = 0x55555555;
	unsigned int mask2  = 0x33333333;
	unsigned int mask4  = 0x0F0F0F0F;
	unsigned int mask8  = 0x00FF00FF;
	unsigned int mask16 = 0x0000FFFF; 

	num = (num & mask1) + ((num >> 1) & mask1);
	num = (num & mask2) + ((num >> 2) & mask2);
	num = (num & mask4) + ((num >> 4) & mask4);
	num = (num & mask8) + ((num >> 8) & mask8);
	num = (num & mask16) + ((num >> 16) & mask16);

	return num;
}

void test1() {
	printf("%d's bit count is %d\n", 7, count_bit1(7));
	printf("%d's bit count is %d\n", 8, count_bit1(8));
	printf("%d's bit count is %d\n", 23, count_bit1(23));
	printf("%d's bit count is %d\n", 0x3333FFFF, count_bit1(0x3333FFFF));
}

void test2() {
	printf("%d's bit count is %d\n", 7, count_bit2(7));
	printf("%d's bit count is %d\n", 8, count_bit2(8));
	printf("%d's bit count is %d\n", 23, count_bit2(23));
	printf("%d's bit count is %d\n", 0x3333FFFF, count_bit2(0x3333FFFF));
}

int main(int argc, const char *argv[]) {
	test1();
	test2();
	return 0;
}
 
分享到:
评论

相关推荐

    [MMS_046057]AOI - Count bit's ON in DINT.rar

    【标题】"MMS_046057"指的是一个特定的学习资源编号,而"AOI - Count bit's ON in DINT"这部分说明了这个压缩包中的内容是关于自动光学检测(AOI)系统中如何在双字整型变量(DINT)中计数位为1的教程或示例程序。...

    led_count8bit_count8_bitledout_

    标题“led_count8bit_count8_bitledout_”和描述“counting_8bit verilog”暗示了这个项目是关于使用Verilog语言实现一个8位计数器,并且该计数器的输出可能驱动了一个8位的LED显示。在Verilog中,计数器是一种常用...

    Bin_count_8bit.rar_Bin_Count_bin_bin count

    标题中的“Bin_count_8bit.rar”暗示了我们即将探讨的是与二进制计数,特别是8位二进制计数相关的内容。8位二进制计数在计算机科学和IT领域中非常重要,因为它是大多数现代计算机系统的基本数据单位。这里的“rar”...

    在C语言学习中总结的笔记【来这里提高你的编程能力..........】

    该示例定义了一个函数countBit,用于计算一个int类型参数中有多少位二进制1。函数的参数是一个整数,返回值是整数的二进制1的数量。 这些知识点和编程示例可以帮助学习者更好地理解和应用C语言的相关概念,提高编程...

    高效的分页存储过程.txt

    - `@doCount bit = 0`:是否计算总数,0表示不计算,1表示计算。 - `@OrderType bit = ''`:排序类型,0表示升序,非0表示降序。 - `@strWhere varchar(1500) = ''`:查询条件(注意:必须以“where”开头)。 #...

    分页存储过程

    - **`@doCount bit = 0`**:是否返回记录总数,0表示不返回,非0表示返回。 - **`@OrderType bit = 0`**:排序类型,0表示升序(ASC),非0表示降序(DESC)。 - **`@strWhere varchar(1500)`**:查询条件,注意以`...

    H.263编解码源码

    1. `countbit.c`:这个文件可能包含了计算比特流数量的函数。在视频编码过程中,计算每个宏块或像素块所需的比特数是至关重要的,因为它直接影响到压缩质量和带宽利用率。 2. `P_picture.c`、`B_picture.c`、`EP_...

    试题1提高组C++试题及答案.pdf

    10. 计算二进制位中1的个数:这是一个常见的编程问题,题目中提供的CountBit函数通过右移操作x &gt;&gt;= 1来计算。 11. NOIP初赛规则:NOIP(全国青少年信息学奥林匹克联赛)允许参赛者携带基本文具,但不允许电子设备,...

    h263编解码程序VC

    5. Countbit.cpp:统计编码过程中产生的比特数,对于压缩率的控制和优化至关重要。 6. CodeInter.cpp:执行熵编码,将量化后的系数编码为比特流。 7. Display.cpp:可能包含显示解码后视频帧的代码,帮助用户验证...

    试题1提高组C++试题及答案.docx

    10. 计算二进制中1的个数:题目中给出的CountBit函数,使用位操作来统计非负整数x的二进制中1的个数,应该填入`x &= x - 1`,这个操作会消除x中最低位的1,直到x变为0。 【其他知识点】 11. NOIP初赛规则:NOIP...

    H.263+编解码程序

    - **countbit.c**:这部分代码可能涉及到比特计数功能,用于计算编码后每个宏块或整个图像的比特数,以便于码率控制。 - **P_picture.c** 和 **B_picture.c**:这两个文件分别处理P帧(预测帧)和B帧(双向预测...

    h263编码源码,支持C语言

    - `countbit.c`:这部分代码可能涉及到比特计数,用于计算编码后的比特数,是量化和熵编码的一部分,对于码率控制至关重要。 - `P_picture.c`:处理P帧(预测帧)的编码,P帧利用前一帧的信息进行预测,减少数据量...

    h.263编解码程序

    - `Countbit.cpp`:这个文件可能负责计算编码后的比特数,对于压缩效率的优化至关重要。 - `CodeInter.cpp`:编码运动补偿(Inter coding)涉及对运动估计的结果进行编码,这是H.263编码的核心部分。 - `Display....

    H.263+编解码程序(由Telenor's tmn version 2.0改成)

    - **countbit.c**:这部分代码通常负责计算编码后的位数,是码率控制的关键部分,通过预估编码后的位数来调整编码参数,以满足特定的带宽要求。 - **P_picture.c和B_picture.c**:分别对应P帧和B帧的处理,P帧使用...

    找工作过程中经常遇到的面试题目

    unsigned long CountBit(unsigned long X) { X = X & 0x55555555 + (X &gt;&gt; 1) & 0x55555555; X = X & 0x33333333 + (X &gt;&gt; 2) & 0x33333333; X = X & 0x0F0F0F0F + (X &gt;&gt; 4) & 0x0F0F0F0F; X = X & 0x00FF00FF + ...

    NOIP2018提高组C试题.pdf

    int CountBit(int x) { int ret = 0; while (x) { ret++; ________; } return ret; } ``` 则空格内要填入的语句是( )。 - A. x &gt;&gt;= 1 - B. x &= x - 1 - C. x |= x &gt;&gt; 1 - D. x - **解析**: 本题...

    sql的left join和count应用

    1. `CREATE TABLE TPL (NAME varchar(20), WORD_ID int primary key, FU_ID numeric, isLeaf bit);` 这个语句创建了一个名为 `TPL` 的表,包含了四个字段:`NAME`(名称),`WORD_ID`(主键,整数类型),`FU_ID`...

    sql 存储过程分页代码 支持亿万庞大数据量

    代码如下: CREATE PROCEDURE page @tblName varchar(255)...1, — 页码 @doCount bit = 0, — 返回记录总数, 非 0 值则返回 @OrderType bit = 0, — 设置排序类型, 非 0 值则降序 0:asc 1:desc @strWhere varchar(1500)

Global site tag (gtag.js) - Google Analytics