在C语言中输入二进制数可以通过以下两种方式实现:
一、使用 `scanf` 函数输入固定长度的二进制数
格式说明符 使用 `%b` 或 `%B` 格式说明符指定输入为二进制数。例如:
```c
include
int main() {
unsigned int binaryNum;
printf("请输入一个32位二进制数(0b开头):");
scanf("%b", &binaryNum);
printf("您输入的二进制数是:%dn", binaryNum);
return 0;
}
```
注意
:`%b` 对输入长度有限制,且输入必须是纯二进制字符(0或1),否则会导致输入错误。
示例运行
输入 `0b1010`,输出 `10`。
二、逐位读取二进制字符串
当输入的二进制数超过 `unsigned int` 的存储范围时,需使用字符数组读取二进制字符串,再手动转换为整数:
```c
include int main() { char binaryStr; printf("请输入一个二进制数(0b开头):"); scanf("%99s", binaryStr); // 限制输入长度为99位,留1位给终止符 int decimalNum = 0; int power = 1; for (int i = strlen(binaryStr) - 1; i >= 0; i--) { if (binaryStr[i] == '1') { decimalNum += power; } else if (binaryStr[i] != '0') { printf("输入的不是有效二进制数 "); return 1; } power *= 2; } printf("对应的十进制数是:%d ", decimalNum); return 0; } ``` 说明 使用 `scanf("%99s", binaryStr)` 读取二进制字符串,限制输入长度为99位(含终止符)。 通过循环遍历字符串,将二进制位转换为十进制并累加。 其他注意事项 输入验证 - 使用 `%b` 时需注意输入格式,建议在二进制数前添加 `0b` 前缀。
- 手动解析字符串时需检查每个字符是否为 `0` 或 `1`,避免非法输入。
扩展应用
- 若需处理非整数二进制数(如浮点数),需使用专门的库函数(如 `strtobin`)。
通过以上方法,可灵活实现二进制数的输入,根据需求选择固定长度读取或动态解析。