📌  相关文章
📜  C程序,将八进制数转换为十进制,反之亦然(1)

📅  最后修改于: 2023-12-03 15:00:13.507000             🧑  作者: Mango

八进制数与十进制数转换

在计算机科学中,十进制数和八进制数都是常用的进制数。在实际编程中,我们需要经常进行十进制数和八进制数之间的转换,因此本文将介绍如何使用C语言进行这些转换。

八进制数转十进制数

八进制数是基于8个数字[0-7],每个数字所占的权重为 $8^n$ (n表示数字对应位置的位数从右往左数)。将八进制数转换为十进制数可以使用如下代码:

#include <stdio.h>
#include <math.h>

int octalToDecimal(int octalNum) {
    int decimalNum = 0, i = 0;

    while (octalNum != 0) {
        decimalNum += (octalNum % 10) * pow(8, i);
        ++i;
        octalNum /= 10;
    }

    return decimalNum;
}

int main() {
    int octalNum;

    printf("Enter an octal number: ");
    scanf("%d", &octalNum);
    
    int decimalNum = octalToDecimal(octalNum);

    printf("Decimal number = %d", decimalNum);

    return 0;
}

这个程序的基本思路是:将每一位的数字乘以对应的权重,然后将结果相加即可得到对应的10进制数。每次循环需要将i自增1,同时将输入的八进制数除以10。

十进制数转八进制数

十进制数的意思是基于10个数字[0-9],每个数字所占的权重为 $10^n$(n表示数字对应位置的位数从右往左数)。将十进制数转化为八进制数可以使用如下代码:

#include <stdio.h>

int decimalToOctal(int decimalNum) {
    int rem, i = 1, octalNum = 0;

    while (decimalNum != 0) {
        rem = decimalNum % 8;
        decimalNum /= 8;
        octalNum += rem * i;
        i *= 10;
    }

    return octalNum;
}

int main() {
    int decimalNum;

    printf("Enter a decimal number:");
    scanf("%d", &decimalNum);

    int octalNum = decimalToOctal(decimalNum);

    printf("Octal number = %d", octalNum);

    return 0;
}

这个程序的基本思路是:将十进制数除以8,将余数加到计算出来的八进制数上,同时将八进制数乘以10。重复这个过程,直到十进制数变成0时循环结束,此时的八进制数就是我们要的结果。

总结

以上就是八进制数和十进制数转换的C语言代码。虽然初学者可能需要一些时间来理解,但是一旦理解了它,对编写二进制网格、处理存储器映射单元等任务将有很大帮助。