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

C 语言范例

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.