【揭秘C语言进制转换的奥秘】轻松掌握二、八、十六进制转换技巧

发布时间:2025-05-24 21:24:14

引言

在打算机科学中,进制转换是一个基本且重要的不雅点。C言语作为一种广泛利用的编程言语,供给了多种方法来实现差别进制之间的转换。本文将深刻探究C言语中二进制、八进制跟十六进制之间的转换技能,帮助读者轻松控制这些进制转换的奥秘。

基本知识

数制简介

  • 二进制(Binary):仅由0跟1构成,逢二进一。
  • 八进制(Octal):由0-7构成,逢八进一。
  • 十六进制(Hexadecimal):由0-9跟A-F构成(其中A-F分辨代表10-15),逢十六进一。

转换道理

进制转换的基本道理是“除基取余法”。比方,将十进制转换为二进制,就是一直将该数除以2,取余数,直到商为0,然后将所缺乏数倒序陈列。

二进制转换

十进制转二进制

#include <stdio.h>

void decimalToBinary(int num) {
    if (num == 0) {
        printf("0");
        return;
    }

    int binary[32];
    int i = 0;
    while (num > 0) {
        binary[i++] = num % 2;
        num = num / 2;
    }

    for (int j = i - 1; j >= 0; j--) {
        printf("%d", binary[j]);
    }
}

int main() {
    int num = 123;
    decimalToBinary(num);
    return 0;
}

二进制转十进制

#include <stdio.h>

int binaryToDecimal(int num) {
    int decimal = 0, base = 1;
    while (num > 0) {
        int temp = num % 10;
        decimal += temp * base;
        base = base * 2;
        num = num / 10;
    }
    return decimal;
}

int main() {
    int num = 1101;
    printf("%d", binaryToDecimal(num));
    return 0;
}

八进制转换

十进制转八进制

#include <stdio.h>

void decimalToOctal(int num) {
    if (num == 0) {
        printf("0");
        return;
    }

    int octal[32];
    int i = 0;
    while (num > 0) {
        octal[i++] = num % 8;
        num = num / 8;
    }

    for (int j = i - 1; j >= 0; j--) {
        printf("%d", octal[j]);
    }
}

int main() {
    int num = 123;
    decimalToOctal(num);
    return 0;
}

八进制转十进制

#include <stdio.h>

int octalToDecimal(int num) {
    int decimal = 0, base = 1;
    while (num > 0) {
        int temp = num % 10;
        decimal += temp * base;
        base = base * 8;
        num = num / 10;
    }
    return decimal;
}

int main() {
    int num = 173;
    printf("%d", octalToDecimal(num));
    return 0;
}

十六进制转换

十进制转十六进制

#include <stdio.h>

void decimalToHexadecimal(int num) {
    if (num == 0) {
        printf("0");
        return;
    }

    int hex[32];
    int i = 0;
    while (num > 0) {
        int temp = num % 16;
        if (temp < 10) {
            hex[i++] = temp;
        } else {
            hex[i++] = temp - 10 + 'A';
        }
        num = num / 16;
    }

    for (int j = i - 1; j >= 0; j--) {
        if (hex[j] < 10) {
            printf("%d", hex[j]);
        } else {
            printf("%c", hex[j]);
        }
    }
}

int main() {
    int num = 255;
    decimalToHexadecimal(num);
    return 0;
}

十六进制转十进制

#include <stdio.h>

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

int main() {
    char hex[] = "FF";
    printf("%d", hexadecimalToDecimal(hex));
    return 0;
}

总结

经由过程本文的介绍,信赖读者曾经对C言语中的进制转换有了更深刻的懂得。控制这些进制转换技能,将有助于读者在编程现实中更好地处理数据。