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

C 语言范例

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

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

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