C语言n进制转换成十进制(n <= 10)

该程序实现了一个功能,将任意n进制的整数转换为十进制。通过循环计算,对输入的n进制数进行逐位转换,用到了取模和除法操作,并利用幂运算将每一位转换结果累加到十进制数中。测试程序展示了如何调用这个转换函数并打印结果。
摘要由CSDN通过智能技术生成

/** @功能说明:n进制整数转换成十进制
  * @参数:    data_n   n进制整数数据
  * @参数:    n        需要转换的进制 n小于等于10
  * @返回值:  十进制数据
  */
uint32_t nBaseToDecimal(uint32_t data_n, uint8_t n)
{
    uint32_t data_Decimal = 0;  //十进制数
    uint32_t y = 0;             //余数(模)

    for(uint8_t i = 0; data_n; i++)
    {
        y = data_n % 10;            //求模
        data_n /= 10;
        if(y >= n)                  //模不能大于n
            continue;
        y *= (uint32_t)pow(n, i);   //模乘以n的i次幂
        data_Decimal += y;          //求和
    }

    return data_Decimal;
}

测试程序

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



/** @功能说明:n进制整数转换成十进制
  * @参数:    data_n   n进制整数数据
  * @参数:    n        需要转换的进制 n小于等于10
  * @返回值:  十进制数据
  */
uint32_t nBaseToDecimal(uint32_t data_n, uint8_t n)
{
    uint32_t data_Decimal = 0;  //十进制数
    uint32_t y = 0;             //余数(模)

    for(uint8_t i = 0; data_n; i++)
    {
        y = data_n % 10;            //求模
        data_n /= 10;
        if(y >= n)                  //模不能大于n
            continue;
        y *= (uint32_t)pow(n, i);   //模乘以n的i次幂
        data_Decimal += y;          //求和
    }

    return data_Decimal;
}




int main()
{
    uint32_t data_n = 0;
    int32_t n = 0;
    printf("Input\n");
    scanf("%d %d",&data_n, &n);
    printf("%d", nBaseToDecimal(data_n, n));

	return 0;
}

在这里插入图片描述
在这里插入图片描述

### 回答1: 可以使用位运算符将十进制换为二进制数。以下是一个示例代码: ```c #include <stdio.h> void decimalToBinary(int decimal) { int binary[32]; int i = ; while (decimal > ) { binary[i] = decimal % 2; decimal /= 2; i++; } for (int j = i - 1; j >= ; j--) { printf("%d", binary[j]); } } int main() { int decimal = 10; printf("十进制数 %d 换为二进制数为:", decimal); decimalToBinary(decimal); return ; } ``` 输出结果为:十进制10 换为二进制数为:101 ### 回答2: C语言中,将一个十进制换为二进制数有多种方法,以下是其中一种常见的方法: 方法一:使用位运算 首先,将十进制数不断除以2,将得到的余数按照从下到上的顺序排列,即可得到对应的二进制数。 具体步骤如下: 1. 定义一个数组,用于存放二进制数的每一位; 2. 初始化一个变量n为十进制数; 3. 定义一个循环,直到n为0结束(即n小于等于0); 1) 将n对2取余数,并将余数存入数组中; 2) 将n除以2,更新n的值; 4. 反数组,即将低位的数移到高位; 5. 输出数组中的每一位元素,即可得到换后的二进制数。 例如,将十进制数19换为二进制数的过程如下: 1. 初始化数组,长度为32; 2. n=19; 3. 循环开始,第一次取余数为1,将1存入数组; n更新为9; 第二次取余数为1,将1存入数组; n更新为4; 第三次取余数为0,将0存入数组; n更新为2; 第四次取余数为1,将1存入数组; n更新为1; 第五次取余数为1,将1存入数组; n更新为0; 此时循环结束; 4. 反数组,得到数组中的元素为1、1、0、0、1,依次输出即可。 使用上述方法,可以将任意一个十进制换为对应的二进制数。 ### 回答3: C语言中,可以使用位运算操作符将10进制换为2进制数。以下是一种简单的实现方法: 首先,创建一个函数来进行换: ```c void decimalToBinary(int decimal) { if (decimal == 0) { printf("0"); return; } int binary[32]; int i = 0; while (decimal > 0) { binary[i] = decimal % 2; decimal = decimal / 2; i++; } for (int j = i - 1; j >= 0; j--) { printf("%d", binary[j]); } } ``` 然后,在主函数中调用该函数将10进制换为2进制数: ```c #include <stdio.h> int main() { int decimal; printf("请输入一个十进制数:"); scanf("%d", &decimal); printf("该十进制数的二进制表示为:"); decimalToBinary(decimal); return 0; } ``` 现在,当你运行该程序并输入一个十进制数时,它将输出该十进制数的二进制表示。例如,输入10,该程序将输出:1010
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值