/*
* 名称: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语言】之实现计算正整数的有效位数
最新推荐文章于 2023-05-31 15:49:45 发布