进制转化(c 语言实现)

部分进制转化(c 语言实现)

文章目录

  1. 二进制转化为其他进制数

  2. 十进制数转化为二进制数

一、二进制转化为其他进制数

  1. 因为我们要将二进制数转化为其他进制数,所以第一步就是要确保输入的值为二进制数。

    主要 是判断每一位数 要不是 1,要不是 0就可以

int InputNum(int n)			// 这个 n 可以定义在函数内部
{
    printf("请输入对应的二进制数\n");
    int num;
    scanf("%d", &n);
    num = n;
    while (num > 0)						
    {
        while (num % 10 != 0 && num % 10 != 1)	//判断 是否为 1 或是 0
        {
            printf("输入错误,请重新输入\n");
            scanf("%d", &num);
            if (num % 10 == 0 || num % 10 == 1)
            {
                break;
            }
        }
        num = num / 10;					// 第一位 为 二进制数时,判断第二位
    }
    return n;							//这个可以不写
}


2. 最后是主函数的编写

  由于二进制数转化为十进制数 的 方法为 如下图所示


  所以主函数的编写为:

int main()
{
    int remainder, number = 0, decimal_number = 0, temp = 1;
    number = InputNum(number);

    int n = number;

    // Iterate over the number until the end.
    while (number > 0)
    {
        remainder = number % 10;  
        number = number / 10;
        decimal_number += remainder * temp;
        temp = temp * 2;
    }

    printf("八进制数:%lo\n", decimal_number); //使用 c 语言自带的语法进行十进制转化为其他进制数
    printf("十进制数:%d\n", decimal_number);
    printf("十六进制数:%lx\n", decimal_number);
}

 上面的代码,我们使用了 lo lx 来转化 十进制 转化为 其他进制数,那么我们自己如何来实现呢?

 下面给出 二进制转化为八进制的方法。

 八进制 是由 三位 二进制数组成 (2^3 = 8)

int main(void)
{
    int binary_num, d = 0, base = 1, remainder, td, res = 0, ord = 1;

    printf("Enter the binary no: ");
    scanf("%d", &binary_num);			

    td = binary_num;

    while (td > 0)
    {
        d = 0, base = 1;
        for (int i = 0; i < 3; i++)			//每三位数计算 大小
        {
            remainder = td % 10;
            td /= 10;
            d += (base * remainder);
            base *= 2;
        }

        res += d * ord;  	// 实现 1*10 变成十位
        ord *= 10;

        td = td / 1000;		//减去三位数,一个八进制数为 三个 二进制数组成
    }
    printf("\nOctal equivalent is: %d", res);
    return 0;
}


 至于十六进制,这里就不给出具体方法了,2^4 = 16, 所以每 四 位二进制数可以转化为 一个十六进制数。

二、十进制数转化为二进制数

 十进制转化为二进制数的方法就是,对 2 求 余,再从下往上 写出即是 十进制对应的 二进制数

 原谅我,这画图工具实在没怎么用过。

 while (inputNumber > 0)
    {
        re = inputNumber % 2;				//对2 求余
        inputNumber = inputNumber / 2;		//换下一位数

        bits[i] = re;
        i++;
    }

    printf("\n the number in binary is: ");
	
    for (j = i - 1; j >= 0; j--)			//倒序写出
    {
        printf("%d", bits[j]);
    }

    if (i == 0)				//如果输入的 值为 0
    {
        printf("0");
    }

 至于其他进制转化,有兴趣可以自己去查找方法。我一般都是使用 先转化为 二进制再转化为 其他进制数。

最后

 有什么问题,欢迎在评论区指出,可以一起讨论。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
将二进制转化为十进制数,可以使用幂的方法: 例如,对于一个二进制数 `1011`,其对应的十进制数为: ``` 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 8 + 0 + 2 + 1 = 11 ``` 在 C 语言中,可以使用循环和条件语句来实现这个过程。具体来说,可以按照以下步骤实现: 1. 读入一个二进制数,可以使用 `scanf` 函数读入一个字符串或字符数组。 2. 从右到左遍历二进制数的每一位,对于每一位: - 如果该位为 `1`,则将对应的幂次项加入到总和中。 - 如果该位为 `0`,则不做任何操作。 3. 遍历完所有位之后,得到的总和就是十进制数。 下面是一个示例程序,可以将一个二进制转化为十进制数: ```c #include <stdio.h> #include <string.h> #include <math.h> int main() { char binary[32]; // 假设最多有 32 位二进制数 int decimal = 0; int len, i; printf("请输入一个二进制数:"); scanf("%s", binary); len = strlen(binary); for (i = len - 1; i >= 0; i--) { if (binary[i] == '1') { decimal += pow(2, len - i - 1); } } printf("转化为十进制数为:%d\n", decimal); return 0; } ``` 在这个程序中,首先使用 `scanf` 函数读入一个字符串类型的二进制数 `binary`,然后计算出二进制数的长度 `len`。接着,使用一个循环从右到左遍历二进制数的每一位,如果该位为 `1`,则将对应的幂次项加入到总和中。最后,输出转化后的十进制数 `decimal`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿轩雪灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值