十进制转化为八进制和16进制的c代码
时间: 2023-05-20 12:00:53 浏览: 43
以下是将十进制数转换为八进制和十六进制的C代码:
```c
#include <stdio.h>
int main() {
int decimal;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
printf("转换为八进制:%o\n", decimal);
printf("转换为十六进制:%X\n", decimal);
return 0;
}
```
注意:这个代码只能转换非负整数。如果需要转换负数,需要使用补码表示。
相关问题
十进制如何转化为八进制和十六进制
将十进制数转换为八进制和十六进制,可以使用以下方法:
1. 八进制转换法:
将十进制数不断除以8,直到商为0,余数倒序排列即为对应的八进制数。
例如,将十进制数23转换为八进制:
23 ÷ 8 = 2 … 7
2 ÷ 8 = 0 … 2
因此,23的八进制表示为27。
2. 十六进制转换法:
将十进制数不断除以16,直到商为0,余数倒序排列即为对应的十六进制数。如果余数大于9,则分别用A、B、C、D、E、F来表示10~15。
例如,将十进制数123转换为十六进制:
123 ÷ 16 = 7 … 11(B)
7 ÷ 16 = 0 … 7
因此,123的十六进制表示为7B。
总结一下,将十进制数转换为八进制和十六进制,可以使用不断除以8或16的方法,得到的余数倒序排列即为对应的八进制或十六进制数。
将2 8 16进制转化成十进制c语言程序
以下是将2进制、8进制和16进制转换成十进制的C语言程序:
```c
#include <stdio.h>
#include <math.h>
int binToDec(long long bin); // 二进制转十进制
int octToDec(int oct); // 八进制转十进制
int hexToDec(char hex[]); // 十六进制转十进制
int main() {
long long bin;
int oct;
char hex[10];
printf("请输入一个二进制数: ");
scanf("%lld", &bin);
printf("%lld(2) = %d(10)\n", bin, binToDec(bin));
printf("请输入一个八进制数: ");
scanf("%o", &oct);
printf("%o(8) = %d(10)\n", oct, octToDec(oct));
printf("请输入一个十六进制数: ");
scanf("%s", hex);
printf("%s(16) = %d(10)\n", hex, hexToDec(hex));
return 0;
}
int binToDec(long long bin) {
int dec = 0, i = 0, rem;
while (bin != 0) {
rem = bin % 10;
bin /= 10;
dec += rem * pow(2, i);
++i;
}
return dec;
}
int octToDec(int oct) {
int dec = 0, i = 0, rem;
while (oct != 0) {
rem = oct % 10;
oct /= 10;
dec += rem * pow(8, i);
++i;
}
return dec;
}
int hexToDec(char hex[]) {
int dec = 0, i = 0, len;
len = strlen(hex);
for (i = 0; hex[i] != '\0'; ++i) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec += (hex[i] - '0') * pow(16, len - 1 - i);
}
else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec += (hex[i] - 'A' + 10) * pow(16, len - 1 - i);
}
else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec += (hex[i] - 'a' + 10) * pow(16, len - 1 - i);
}
}
return dec;
}
```
输入要转换的数,程序会输出其对应的十进制数。其中,`binToDec()`函数将二进制转换成十进制,`octToDec()`函数将八进制转换成十进制,`hexToDec()`函数将十六进制转换成十进制。