C语言实现计算正整数的有效位数
2018-03-16 15:43
183 查看
/* * 名称:validBits.c * 功能描述:输入一个正整数,计算其有效的二进制位数 * 编辑人:王廷云 * 编辑日期:2017-1-12 */ #include <stdio.h> int getBits(int value); // 获取整数的有效位数 int main(void) { int value; // 待计算位数的整数 int bits; // 位数 fprintf(stdout, "请输入一个正整数:"); /* 获取用户输入 */ while (1) { if (fscanf(stdin, "%d", &value) != 1) // 检查输入是否为整数 { fprintf(stderr, "输入错误!请重新输入:"); while (fgetc(stdin) != '\n'); // 去掉多余的非法字符 continue; } else if (value < 0) // 检查输入是否为正数 { fprintf(stderr, "输入错误!请输入正整数:"); continue; } else break; } /* 调用函数获取位数 */ bits = getBits(value); /* 打印结果 */ fprintf(stdout, "数字%d有效位数为:%d\n", value, bits); return 0; } /* * 函数名:getBits * 函数功能:计算整数的有效位数 * 参数:待计算的整数 * 返回值:无 */ int getBits(int value) { int bits = 0; // 有效位数 /* 使用do while循环是考虑到值为0的情况 */ do { bits++; value = value >> 1; } while (value != 0); return bits; }
相关文章推荐
- C语言——计算输入的任意数的位数(两种方法)
- 【C语言】计算一个数二进制中一的位数
- 如何有效的实现一个正整数的N次方
- PAT Basic 1063. 计算谱半径(20)(C语言实现)
- 判断单链表中是否有环,计算出环的首地址 C语言实现
- C语言实现输入字符串计算单词个数
- C语言实现时间差计算
- C语言中的单精度双精度数的有效位数
- C语言之linux内核实现位数高低位互换
- C语言实现计算一个文件中的单词个数
- C语言实现整数四则运算表达式的计算
- 计算某个日期起N天后的日期(C语言递归实现)
- C语言中的单精度双精度数的有效位数
- 用C语言编写函数,实现strlen计算字符串长度的功能
- C语言-将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。
- 基姆拉尔森公式计算周几的C语言实现方法
- C语言之linux内核实现位数高低位互换
- C语言实现计算一年中过了多少天
- 用C语言来实现_输入一个日期(年月日),计算是这一年中的第几天
- PAT 2-08 用扑克牌计算24点(C语言实现)