首页/投稿/掌握C语言,必知常用进制转换技巧

掌握C语言,必知常用进制转换技巧

花艺师头像用户BWFS
2025-07-29 05:36:47
6111474 阅读

在C语言编程中,进制转换是一个基础且常用的操作。掌握以下常用进制转换技巧,将有助于提高编程效率和解决问题的能力。

一、十进制转二进制

原理

十进制转二进制采用“除2取余法”,即不断地将十进制数除以2,记录下每次的余数,然后将余数倒序排列,即可得到对应的二进制数。

示例代码

#include <stdio.h>

void decToBin(int n) {
    if (n == 0) {
        printf("0");
        return;
    }
    int arr[32];
    int index = 0;
    while (n > 0) {
        arr[index++] = n % 2;
        n = n / 2;
    }
    for (int i = index - 1; i >= 0; i--) {
        printf("%d", arr[i]);
    }
}

int main() {
    int num;
    printf("Enter a decimal number: ");
    scanf("%d", &num);
    printf("Binary representation: ");
    decToBin(num);
    return 0;
}

二、二进制转十进制

原理

二进制转十进制采用“按位权展开法”,即把二进制数的每一位乘以其对应的2的幂次方,然后将结果相加。

示例代码

#include <stdio.h>

int binToDec(char binary[]) {
    int len = strlen(binary);
    int base = 1;
    int dec_value = 0;
    for (int i = len - 1; i >= 0; i--) {
        if (binary[i] == '1')
            dec_value += base;
        base = base * 2;
    }
    return dec_value;
}

int main() {
    char binary[32];
    printf("Enter a binary number: ");
    scanf("%s", binary);
    printf("Decimal representation: %d", binToDec(binary));
    return 0;
}

三、十进制转八进制

原理

十进制转八进制同样采用“除N取余法”,其中N为8。不断地将十进制数除以8,记录下每次的余数,然后将余数倒序排列,即可得到对应的八进制数。

示例代码

#include <stdio.h>

void decToOct(int n) {
    if (n == 0) {
        printf("0");
        return;
    }
    int arr[32];
    int index = 0;
    while (n > 0) {
        arr[index++] = n % 8;
        n = n / 8;
    }
    for (int i = index - 1; i >= 0; i--) {
        printf("%d", arr[i]);
    }
}

int main() {
    int num;
    printf("Enter a decimal number: ");
    scanf("%d", &num);
    printf("Octal representation: ");
    decToOct(num);
    return 0;
}

四、八进制转十进制

原理

八进制转十进制同样采用“按位权展开法”,即将八进制数的每一位乘以其对应的8的幂次方,然后将结果相加。

示例代码

#include <stdio.h>

int octToDec(char octal[]) {
    int len = strlen(octal);
    int base = 1;
    int dec_value = 0;
    for (int i = len - 1; i >= 0; i--) {
        if (octal[i] >= '0' && octal[i] <= '7')
            dec_value += (octal[i] - '0') * base;
        base = base * 8;
    }
    return dec_value;
}

int main() {
    char octal[32];
    printf("Enter an octal number: ");
    scanf("%s", octal);
    printf("Decimal representation: %d", octToDec(octal));
    return 0;
}

五、十进制转十六进制

原理

十进制转十六进制同样采用“除N取余法”,其中N为16。不断地将十进制数除以16,记录下每次的余数,然后将余数倒序排列。如果余数大于9,则用A、B、C、D、E、F表示。

示例代码

#include <stdio.h>

void decToHex(int n) {
    if (n == 0) {
        printf("0");
        return;
    }
    int arr[32];
    int index = 0;
    while (n > 0) {
        int remainder = n % 16;
        if (remainder < 10)
            arr[index++] = remainder;
        else
            arr[index++] = remainder - 10 + 'A';
        n = n / 16;
    }
    for (int i = index - 1; i >= 0; i--) {
        printf("%c", arr[i]);
    }
}

int main() {
    int num;
    printf("Enter a decimal number: ");
    scanf("%d", &num);
    printf("Hexadecimal representation: ");
    decToHex(num);
    return 0;
}

六、十六进制转十进制

原理

十六进制转十进制同样采用“按位权展开法”,即将十六进制数的每一位乘以其对应的16的幂次方,然后将结果相加。

示例代码

#include <stdio.h>

int hexToDec(char hex[]) {
    int len = strlen(hex);
    int base = 1;
    int dec_value = 0;
    for (int i = len - 1; i >= 0; i--) {
        if (hex[i] >= '0' && hex[i] <= '9')
            dec_value += (hex[i] - '0') * base;
        else if (hex[i] >= 'A' && hex[i] <= 'F')
            dec_value += (hex[i] - 'A' + 10) * base;
        base = base * 16;
    }
    return dec_value;
}

int main() {
    char hex[32];
    printf("Enter a hexadecimal number: ");
    scanf("%s", hex);
    printf("Decimal representation: %d", hexToDec(hex));
    return 0;
}

总结

掌握以上常用进制转换技巧,将有助于你在C语言编程中更好地处理进制转换问题。在实际编程过程中,可以根据需要选择合适的转换方法,以提高编程效率。

标签:

你可能也喜欢

文章目录

    热门标签