【C语言】编写代码实现:求一个整数在内存中的二进制位中1的个数
2017-12-02 21:58
489 查看
问题:求一个整数存储在内存中的二进制位中1的个数。
实现思路:只要使该整数不断右移(每次右移一位,直到它变为0),然后判断每次右移之后它的最低位是否为1,若是1则用计数器记录,上述过程用循环实现。至于判断最低位是否为1,即判断该整数模2取余的结果是否为1(若为1,表明最低位为1)。
程序代码:
运行结果:
此处的num是有符号整数,若定义它为无符号整数(unsigned),再看看结果:
实现思路:只要使该整数不断右移(每次右移一位,直到它变为0),然后判断每次右移之后它的最低位是否为1,若是1则用计数器记录,上述过程用循环实现。至于判断最低位是否为1,即判断该整数模2取余的结果是否为1(若为1,表明最低位为1)。
程序代码:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int num = 0; int count = 0;//计数器 printf("请输入一个整数:"); scanf("%d", &num); while (num)//当num右移过程中为0时结束循环 { if (num % 2 == 1) count++; num >>= 1; } printf("count=%d\n", count); system("pause"); return 0; }
运行结果:
此处的num是有符号整数,若定义它为无符号整数(unsigned),再看看结果:
相关文章推荐
- <C语言>如何一步一步根据简单的代码联想到更多的功能?(实现输入一个整数,输出比它小包括它本身的所有素数。)
- 用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。
- 用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。
- 链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。 用C语言编写 用以存放输入的二进制数 建立 一个带头结点的线性链表
- 请编写实现malloc()内存分配函数功能一样的代码。给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。
- C语言中—— 编写一个函数,实现整数的二进制的形式
- [转载]一个简单的内存缓存实现--一段漂亮的代码
- 习题10:参照Windows系统“附件”中的“计算器”,自行编写一个简易的计算器。要求:可以实现由0~4构成的整数的加减运算。
- c语言实现一个单元测试框架(Unit Test Framework)代码
- (C语言) 怎么用代码实现一个学生成绩管理系统
- 写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)
- 写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)
- 计算机笔试题:写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整型的函数)
- 图论:一个叫做SPFA的东西(C语言代码实现)
- 从易到难编写C++程序,(4)问题:实现一个大整数表示的BigInt类
- c语言使用链表编写一个可以实现班级学生管理系统,增加,删除,修改学生信息
- 编写代码实现删除一个字符串中连续出现超过一次的空格
- 输入一个字符串,取出其中的整数(实现代码)
- 写一个函数,检查字符是否是整数,如果是,返回其整数值(或:怎样只用4行代码编写出一个从字符串到长整型的函数)
- 3. 编写一个C程序,实现对10个整数进行升序排序输出。