C语言编程练习之二进制与八进制相互转换
二进制转换为八进制:
思路:先将二进制转换为十进制(详细参考我的这篇博客 二、十进制相互转换),然后将十进制转换为八进制(这个我们很熟悉)。
具体代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
long long x;
printf("输入一个二进制数: \n");
scanf("%lld", &x);
printf("二进制数 %lld 转换为八进制为 %d", x, convert(x));
return 0;
}
int convert(long long x)
{
int octalNumber = 0, decimalNumber = 0, i = 0;
while(x != 0)
{
decimalNumber += (x%10) * pow(2,i);
++i;
x/=10;
}
i = 1;
while (decimalNumber != 0)
{
octalNumber += (decimalNumber % 8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}
结果如下:
八进制转换为二进制:
思路:八进制先转换为十进制再转换为二进制。
具体代码:
#include <stdio.h>
#include <math.h>
long long convert(int x);
int main()
{
int x;
printf("输入一个八进制数: ");
scanf("%d", &x);
printf("八进制数 %d 转二进制为 %lld", x, convert(x));
return 0;
}
long long convert(int x)
{
int decimalNumber = 0, i = 0;
long long binaryNumber = 0;
while(x != 0)
{
decimalNumber += (x%10) * pow(8,i);
++i;
x/=10;
}
i = 1;
while (decimalNumber != 0)
{
binaryNumber += (decimalNumber % 2) * i;
decimalNumber /= 2;
i *= 10;
}
return binaryNumber;
}
结果如下:
还没有评论,来说两句吧...