C 语言范例 - 二进制与十进制相互转换
二进制转与十进制相互转换
二进制转换为十进制
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> #include <math.h> int bin2dec(long long n); int main() { long long n; printf("输入一个二进制数: "); scanf("%lld", &n); printf("二进制数 %lld 转换为十进制为 %d\n", n, bin2dec(n)); return 0; } int bin2dec(long long n) { int decimal = 0, i = 0, remainder; while (n!=0) { remainder = n%10; n /= 10; decimal += remainder*pow(2,i); ++i; } return decimal; }
编译运行范例,输出结果如下
$ gcc main.c && ./a.out 输入一个二进制数: 0101001 二进制数 101001 转换为十进制为 41
十进制转换为二进制
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> #include <math.h> long long dec2bin(int n); int main() { int n; printf("输入一个十进制数: "); scanf("%d", &n); printf("十进制数 %d 转换为二进制位 %lld\n", n, dec2bin(n)); return 0; } long long dec2bin(int n) { long long binary = 0; int remainder, i = 1, step = 1; while (n!=0) { remainder = n%2; printf("Step %d: %d/2, 余数 = %d, 商 = %d\n", step++, n, remainder, n/2); n /= 2; binary += remainder*i; i *= 10; } return binary; }
编译运行范例,输出结果如下
$ gcc main.c && ./a.out 输入一个十进制数: 66 Step 1: 66/2, 余数 = 0, 商 = 33 Step 2: 33/2, 余数 = 1, 商 = 16 Step 3: 16/2, 余数 = 0, 商 = 8 Step 4: 8/2, 余数 = 0, 商 = 4 Step 5: 4/2, 余数 = 0, 商 = 2 Step 6: 2/2, 余数 = 0, 商 = 1 Step 7: 1/2, 余数 = 1, 商 = 0 十进制数 66 转换为二进制位 1000010