#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"这部分说明了这个压缩包中的内容是关于自动光学检测(AOI)系统中如何在双字整型变量(DINT)中计数位为1的教程或示例程序。...
标题“led_count8bit_count8_bitledout_”和描述“counting_8bit verilog”暗示了这个项目是关于使用Verilog语言实现一个8位计数器,并且该计数器的输出可能驱动了一个8位的LED显示。在Verilog中,计数器是一种常用...
标题中的“Bin_count_8bit.rar”暗示了我们即将探讨的是与二进制计数,特别是8位二进制计数相关的内容。8位二进制计数在计算机科学和IT领域中非常重要,因为它是大多数现代计算机系统的基本数据单位。这里的“rar”...
该示例定义了一个函数countBit,用于计算一个int类型参数中有多少位二进制1。函数的参数是一个整数,返回值是整数的二进制1的数量。 这些知识点和编程示例可以帮助学习者更好地理解和应用C语言的相关概念,提高编程...
- `@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)`**:查询条件,注意以`...
1. `countbit.c`:这个文件可能包含了计算比特流数量的函数。在视频编码过程中,计算每个宏块或像素块所需的比特数是至关重要的,因为它直接影响到压缩质量和带宽利用率。 2. `P_picture.c`、`B_picture.c`、`EP_...
10. 计算二进制位中1的个数:这是一个常见的编程问题,题目中提供的CountBit函数通过右移操作x >>= 1来计算。 11. NOIP初赛规则:NOIP(全国青少年信息学奥林匹克联赛)允许参赛者携带基本文具,但不允许电子设备,...
5. Countbit.cpp:统计编码过程中产生的比特数,对于压缩率的控制和优化至关重要。 6. CodeInter.cpp:执行熵编码,将量化后的系数编码为比特流。 7. Display.cpp:可能包含显示解码后视频帧的代码,帮助用户验证...
10. 计算二进制中1的个数:题目中给出的CountBit函数,使用位操作来统计非负整数x的二进制中1的个数,应该填入`x &= x - 1`,这个操作会消除x中最低位的1,直到x变为0。 【其他知识点】 11. NOIP初赛规则:NOIP...
- **countbit.c**:这部分代码可能涉及到比特计数功能,用于计算编码后每个宏块或整个图像的比特数,以便于码率控制。 - **P_picture.c** 和 **B_picture.c**:这两个文件分别处理P帧(预测帧)和B帧(双向预测...
- `countbit.c`:这部分代码可能涉及到比特计数,用于计算编码后的比特数,是量化和熵编码的一部分,对于码率控制至关重要。 - `P_picture.c`:处理P帧(预测帧)的编码,P帧利用前一帧的信息进行预测,减少数据量...
- `Countbit.cpp`:这个文件可能负责计算编码后的比特数,对于压缩效率的优化至关重要。 - `CodeInter.cpp`:编码运动补偿(Inter coding)涉及对运动估计的结果进行编码,这是H.263编码的核心部分。 - `Display....
- **countbit.c**:这部分代码通常负责计算编码后的位数,是码率控制的关键部分,通过预估编码后的位数来调整编码参数,以满足特定的带宽要求。 - **P_picture.c和B_picture.c**:分别对应P帧和B帧的处理,P帧使用...
unsigned long CountBit(unsigned long X) { X = X & 0x55555555 + (X >> 1) & 0x55555555; X = X & 0x33333333 + (X >> 2) & 0x33333333; X = X & 0x0F0F0F0F + (X >> 4) & 0x0F0F0F0F; X = X & 0x00FF00FF + ...
int CountBit(int x) { int ret = 0; while (x) { ret++; ________; } return ret; } ``` 则空格内要填入的语句是( )。 - A. x >>= 1 - B. x &= x - 1 - C. x |= x >> 1 - D. x - **解析**: 本题...
1. `CREATE TABLE TPL (NAME varchar(20), WORD_ID int primary key, FU_ID numeric, isLeaf bit);` 这个语句创建了一个名为 `TPL` 的表,包含了四个字段:`NAME`(名称),`WORD_ID`(主键,整数类型),`FU_ID`...
代码如下: CREATE PROCEDURE page @tblName varchar(255)...1, — 页码 @doCount bit = 0, — 返回记录总数, 非 0 值则返回 @OrderType bit = 0, — 设置排序类型, 非 0 值则降序 0:asc 1:desc @strWhere varchar(1500)