进制转换(C语言)
时间: 2023-07-02 18:06:33 浏览: 183
C语言进制转换C语言进制转换.doc
进制转换是计算机程序开发中的一个基本操作。在C语言中,我们可以使用一些函数来实现进制转换。
1. 十进制转二进制
使用C语言中的位运算符可以实现十进制转二进制的操作。具体方法是:将十进制数不断除以2,记录每一次的余数,直到商为0为止。然后将所有余数倒序排列起来,就是该十进制数的二进制表示。
下面是一个示例代码:
```c
#include <stdio.h>
void decToBin(int decimal) {
int binary[32];
int i = 0;
while (decimal > 0) {
binary[i] = decimal % 2;
decimal /= 2;
i++;
}
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
}
int main() {
int decimal = 13;
printf("The binary representation of %d is: ", decimal);
decToBin(decimal);
printf("\n");
return 0;
}
```
输出结果为:
```
The binary representation of 13 is: 1101
```
2. 二进制转十进制
二进制转十进制的方法也很简单,就是将二进制数中每一位的值乘以2的幂次方,再将其相加。例如,二进制数1011,其十进制表示为:
1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 8 + 0 + 2 + 1 = 11
下面是一个示例代码:
```c
#include <stdio.h>
int binToDec(int binary) {
int decimal = 0;
int base = 1;
while (binary > 0) {
int lastDigit = binary % 10;
decimal += lastDigit * base;
binary /= 10;
base *= 2;
}
return decimal;
}
int main() {
int binary = 1011;
printf("The decimal representation of %d is: %d\n", binary, binToDec(binary));
return 0;
}
```
输出结果为:
```
The decimal representation of 1011 is: 11
```
3. 十进制转十六进制
十进制转十六进制可以使用sprintf函数实现。具体方法是:将十进制数传入sprintf函数,指定输出格式为"%X",然后将输出结果存入一个字符数组中。
下面是一个示例代码:
```c
#include <stdio.h>
void decToHex(int decimal) {
char hex[100];
sprintf(hex, "%X", decimal);
printf("The hexadecimal representation of %d is: %s\n", decimal, hex);
}
int main() {
int decimal = 255;
decToHex(decimal);
return 0;
}
```
输出结果为:
```
The hexadecimal representation of 255 is: FF
```
4. 十六进制转十进制
十六进制转十进制也可以使用sprintf函数实现。具体方法是:将十六进制数传入sprintf函数,指定输出格式为"%d",然后将输出结果转换成整数。
下面是一个示例代码:
```c
#include <stdio.h>
int hexToDec(char* hex) {
int decimal;
sscanf(hex, "%X", &decimal);
return decimal;
}
int main() {
char hex[] = "FF";
printf("The decimal representation of %s is: %d\n", hex, hexToDec(hex));
return 0;
}
```
输出结果为:
```
The decimal representation of FF is: 255
```
以上是C语言中进行进制转换的一些常用方法。
阅读全文