📅  最后修改于: 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语言代码。虽然初学者可能需要一些时间来理解,但是一旦理解了它,对编写二进制网格、处理存储器映射单元等任务将有很大帮助。