您的位置:首页 > 编程语言 > C语言/C++

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语言 有效位数