C 语言范例 - 八进制与二进制相互转换
八进制与二进制相互转换
二进制转换为八进制
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> #include <math.h> int bin2oct(long long bin); int main() { long long bin; printf("输入一个二进制数: "); scanf("%lld", &bin); printf("二进制数 %lld 转换为八进制为 %d\n", bin, bin2oct( bin )); return 0; } int bin2oct(long long bin) { int oct = 0, dec = 0, i = 0; while( bin != 0) { dec += ( bin % 10 ) * pow(2,i); ++i; bin/=10; } i = 1; while (dec != 0) { oct += (dec % 8) * i; dec /= 8; i *= 10; } return oct; }
编译运行范例,输出结果为
$ gcc main.c && ./a.out 输入一个二进制数: 0101001 二进制数 101001 转换为八进制为 51
八进制转换为二进制
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> #include <math.h> long long oct2bin(int octal); int main() { int octal; printf("输入一个八进制数: "); scanf("%d", &octal); printf("八进制数 %d 转二进制为 %lld\n", octal, oct2bin(octal)); return 0; } long long oct2bin(int octal) { int decimal = 0, i = 0; long long binary = 0; while(octal != 0) { decimal += (octal%10) * pow(8,i); ++i; octal/=10; } i = 1; while (decimal != 0) { binary += (decimal % 2) * i; decimal /= 2; i *= 10; } return binary; }
编译运行范例,输出结果如下
$ gcc main.c && ./a.out 输入一个八进制数: 77 八进制数 77 转二进制为 111111