c语言编程笔录

首页 >   > 笔记大全

笔记大全

C语言如何实现常见进制转换

更新时间:2023-10-02

前言

在计算机领域中,进制转换是一项非常基础且重要的操作。C语言作为一种广泛使用的编程语言,提供了多种实现进制转换的方法。本文将介绍在C语言中如何实现常见的进制转换,并提供相应的代码示例。

1. 十进制转二进制

将一个十进制数转换为二进制数,可以通过不断将十进制数除以2,并将得到的余数存储下来,直至十进制数为0为止。最后,按照得到的余数倒序排列即可得到对应的二进制数。

以下是一个示例代码:

#include<stdio.h>

void decimalToBinary(int decimal) {
    int binary[32], index = 0;
    
    while(decimal > 0) {
        binary[index++] = decimal % 2;
        decimal = decimal / 2;
    }
    
    for(int i = index - 1; i >= 0; i--) {
        printf("%d", binary[i]);
    }
    printf("\n");
}

int main() {
    int decimal;
    printf("请输入一个十进制数:");
    scanf("%d", &decimal);
    printf("转换为二进制数为:");
    decimalToBinary(decimal);
    return 0;
}

2. 二进制转十进制

将一个二进制数转换为十进制数,可以按照每一位的权重相加的方式进行计算。从二进制数的最低位开始,依次乘以2的相应次幂(从0开始),然后将得到的结果累加即可。

以下是一个示例代码:

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

int binaryToDecimal(int binary) {
    int decimal = 0, index = 0, rem;
    
    while(binary > 0) {
        rem = binary % 10;
        decimal += rem * pow(2, index);
        binary = binary / 10;
        index++;
    }
    
    return decimal;
}

int main() {
    int binary;
    printf("请输入一个二进制数:");
    scanf("%d", &binary);
    printf("转换为十进制数为:%d\n", binaryToDecimal(binary));
    return 0;
}

3. 十进制转十六进制

将一个十进制数转换为十六进制数,可以通过不断将十进制数除以16,并将得到的余数转换为十六进制的对应表示,直至十进制数为0为止。最后,按照得到的余数倒序排列即可得到对应的十六进制数。

以下是一个示例代码:

#include<stdio.h>

void decimalToHexadecimal(int decimal) {
    char hexadecimal[32];
    int index = 0, rem;
    
    while(decimal > 0) {
        rem = decimal % 16;
        
        if(rem <= 9) {
            hexadecimal[index++] = rem + 48;
        } else {
            hexadecimal[index++] = rem + 55;
        }
        
        decimal = decimal / 16;
    }
    
    for(int i = index - 1; i >= 0; i--) {
        printf("%c", hexadecimal[i]);
    }
    printf("\n");
}

int main() {
    int decimal;
    printf("请输入一个十进制数:");
    scanf("%d", &decimal);
    printf("转换为十六进制数为:");
    decimalToHexadecimal(decimal);
    return 0;
}

4. 十六进制转十进制

将一个十六进制数转换为十进制数,可以按照每一位的权重相加的方式进行计算。从十六进制数的最低位开始,依次乘以16的相应次幂(从0开始),然后将得到的结果累加即可。

以下是一个示例代码:

#include<stdio.h>

int hexadecimalToDecimal(char hexadecimal[]) {
    int decimal = 0, index = 0, power = 0;
    
    for(int i = 0; hexadecimal[i] != '\0'; i++) {
        index = i;
    }
    
    for(int i = index; i >= 0; i--) {
        if(hexadecimal[i] >= '0' && hexadecimal[i] <= '9') {
            decimal += (hexadecimal[i] - 48) * pow(16, power++);
        } else if(hexadecimal[i] >= 'A' && hexadecimal[i] <= 'F') {
            decimal += (hexadecimal[i] - 55) * pow(16, power++);
        } else if(hexadecimal[i] >= 'a' && hexadecimal[i] <= 'f') {
            decimal += (hexadecimal[i] - 87) * pow(16, power++);
        }
    }
    
    return decimal;
}

int main() {
    char hexadecimal[32];
    printf("请输入一个十六进制数:");
    scanf("%s", hexadecimal);
    printf("转换为十进制数为:%d\n", hexadecimalToDecimal(hexadecimal));
    return 0;
}

总结

本文介绍了在C语言中如何实现常见的进制转换。通过这些方法,可以方便地将十进制数转换为二进制、十六进制,以及将二进制、十六进制数转换为十进制。在实际应用中,进制转换是一项非常基础且常用的操作,对于处理各种进制表示的数据非常有帮助。希望这些方法可以帮助读者更好地理解和应用进制转换。