进制转换


void decToBinary(int decimal)
{
    int binary[32];
    int cnt = 0;

    while (decimal > 0)
    {
        binary[cnt] = decimal % 2; // 取模放在低位
        decimal = decimal / 2;     // 更新参数
        cnt++;
    }

    printf("Binary equivalent: ");
    for (int i = cnt - 1; i >= 0; i--) // 逆向输出
    {
        printf("%d", binary[i]);
    }
    printf("\n");
}

void decToOctal(int decimal)
{
    int octal[100];
    int cnt = 0;

    while (decimal > 0)
    {
        octal[cnt] = decimal % 8; // 取模
        decimal = decimal / 8;    // 更新参数
        cnt++;
    }

    printf("Octal equivalent: ");
    for (int i = cnt - 1; i >= 0; i--)
    {
        printf("%d", octal[i]);
    }
    printf("\n");
}

void decToHex(int decimal)
{
    char hex[100];
    int cnt = 0;

    while (decimal > 0)
    {
        int remainder = decimal % 16; // 对参数取模,余数

        if (remainder < 10) // 余数小于10,存入ASCII码
        {
            hex[cnt] = remainder + '0';
        }
        else
        {
            hex[cnt] = remainder + 'A' - 10; // ASCII字母A-10输出字母
        }

        decimal = decimal / 16; // 更新参数
        cnt++;
    }

    printf("Hexadecimal equivalent: ");
    for (int i = cnt - 1; i >= 0; i--) // 的到结果要逆向输出
    {
        printf("%c", hex[i]);
    }
    printf("\n");
}

int main()
{
    int decimal;
    printf("Enter a decimal number: ");
    scanf("%d", &decimal);

    decToBinary(decimal);
    decToOctal(decimal);
    decToHex(decimal);

    return 0;
}

运行结果:

总结:进制转换重点在于存入数组的时候输出要逆向输出,还有16进制转换的时候要判断余值是否是否小于10,因为16进制10~15要用字母表示 所以要加上他们的ASCII再减去10.

posted @ 2024-06-04 16:00  小北bolg  阅读(51)  评论(0)    收藏  举报