二进制转换八进制c语言
时间: 2023-07-09 09:42:59 浏览: 151
C语言-顺序栈实现十进制转换为二进制-八进制-十六进制
以下是将二进制数转换为八进制数的 C 代码:
```c
#include <stdio.h>
int main() {
long long binary, octal = 0;
int digit = 0, i = 0;
printf("Enter a binary number: ");
scanf("%lld", &binary);
// 计算二进制数的位数
while (binary != 0) {
digit++;
binary /= 10;
}
// 如果二进制数的位数不是 3 的倍数,则在最高位补 0
if (digit % 3 != 0) {
digit += 3 - (digit % 3);
}
// 从右往左每三个二进制位一组,转换成一个八进制数
while (digit > 0) {
octal += (binary % 10) * (1 << i);
i++;
if (i == 3) {
i = 0;
printf("%lld", octal);
octal = 0;
}
digit--;
binary /= 10;
}
return 0;
}
```
这个程序的步骤如下:
1. 从用户输入中读取一个二进制数。
2. 计算该二进制数的位数。
3. 如果位数不是 3 的倍数,则在最高位补 0。
4. 从右往左每三个二进制位一组,转换成一个八进制数。
5. 输出转换后的八进制数。
在第 4 步中,我们使用了位运算符 `<<`,它表示将一个数左移若干位,相当于将这个数乘以 $2$ 的若干次方。在这里,我们将 $1$ 左移 $0$、$1$、$2$ 位,分别对应八进制数的个位、十位、百位。
需要注意的是,由于 C 语言不支持直接输入二进制数,我们需要先读入一个长整型数,然后将它视为一个二进制数进行处理。
阅读全文