c语言如何把二进制数转化为十进制数

用函数的方法,尽量体谅一下我这个初学者,不要太复杂

//*********************************************
//不使用求余和除法的二进制转bcd的算法
//使用了C51中 指令DA的思路
//本人原创 已测试 以应用实际项目中
//Lhex_to_bcd
//*********************************************
//**************************
// 数据自加 并作10进制检查
//
//**************************
void C51_DA(unsigned char *da1,unsigned char Ln,unsigned char ac0)
{
unsigned char i;
unsigned char ac = ac0;//进位标志

for(i=0;i<Ln;i++)
{
da1[i] = da1[i] + da1[i] + ac;

if(da1[i] > 9)
{
da1[i] = da1[i] - 10;
ac = 1;
}
else
{
ac= 0;
}
}
}

//**************************************
// 多字节整形转 bcd
// 结果保存为非压缩bcd码
// 输入数据
// da1 用来保存转换结果
// 长度大于 (l+1)*2
// da2 被转换数据
// l da2 长度 用字节个数表示
// 输出 无
//**************************************
void Lhex_to_bcd(unsigned char *da1,unsigned char *da2,unsigned char l)
{
unsigned char i;
unsigned char m;
unsigned char tmp;
unsigned char Ln = (l+1)*2; //计算结果的长度

for(i=0;i<Ln;i++) //初始化计算结果
da1[i] = 0;

for(m=0;m<l;m++) //循环输入数据的字节数
{
tmp = da2[l-1-m];

for(i=0;i<8;i++)//每个字节循环8次
{
if(tmp&0x80) //取最高 1 bit
C51_DA(da1,Ln,1);
else
C51_DA(da1,Ln,0);
tmp<<=1;
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-12-28

第2个回答  2010-06-06
纯数学方法会 C就不会

c语言如何把二进制数转化为十进制数
详情请查看视频回答

c语言如何把二进制数转化为十进制数
\/\/ 多字节整形转 bcd \/\/ 结果保存为非压缩bcd码 \/\/ 输入数据 \/\/ da1 用来保存转换结果 \/\/ 长度大于 (l+1)*2 \/\/ da2 被转换数据 \/\/ l da2 长度 用字节个数表示 \/\/ 输出 无 \/\/ void Lhex_to_bcd(unsigned char *da1,unsigned char *da2,unsigned char l)...

c语言把二进制数转换成十进制数的程序怎么写。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:int a = 0b10000001;printf("%d", a);。3、编译器运行test.cpp文件,此时输入的8位二进制数被成功用十进制进行了输出。

c语言把二进制数转换成十进制数的程序怎么写。
按照如下步骤即可用C语言把二进制数转换成十进制数的程序:1、首先在主函数中设置成函数Sum,另外定义了一个数组array[8],用于存放输入的八位二进制数。2、然后使用了一个for循环语句,用于输入八位二进制数。在scanf函数里,在%d之间加一个1,然后使用printf函数输出,并且调用Sum函数,数组名作为实参。

C语言 怎样将二进制数转换成十进制,又怎样将十进制数转换成二进制数输出...
将十进制数转换成二进制数,采用的原理就是辗转除2,逆向输出余数。(windows系统下的itoa函数也是一个不错的选择,但DIY更有意义)实现方法:include <stdio.h> void swap( char *a, char *b ){ char t=*a;a=*b;b=t;} char *reverse(char *s,int len){ char *b=s, *e=s+len-1...

怎样用C语言将二进制数转换成十进制
将二进制转成十进制,按权值展开求和即可。可以通过以下代码解决:include <stdio.h> include <stdlib.h> int main(){ char a[17];gets(a);int len,i,sum=0,m,j;len=strlen(a);if(len<=16){ for(i=0;i<len;i++){ m=1;if(a[i]=='1'){ for(j=1;j<=len-i-1;j++)m*...

c语言怎么将2进制转化为10进制
include<stdio.h>int Sum(int a[]);int power(int b);int main(){ int array[8],i; printf("输入一个8位二进制数:"); for(i=0;i<8;i++) { scanf("%1d",&array[i]); } printf("转换为十进制数后是:%d\\n",Sum(array)); return 0;}int Sum(int ...

C语言,利用函数实现将二进制数转化为十进制数并实现相加。
\/\/转为十进制数的中间结果变量 int i=0; \/\/当前求到了二进制数的位置 while(B[i++]!='\\0')\/\/当没有到二进制数结束时,一直循环 { d=d*2+B[i-1]-'0'; \/\/求出每个二进制位的位权(从高位到低位,所以每求一位,先前的都应变为原来的2倍),累加到中间结果 } ...

如何将二进制数转换为十进制数?
C语言程序如下:include<stdio.h> int main(){ int N,i,t;int a[100];scanf("%d",&N);for(i=0;N!=0;i++){ a[i]=N%2;N=N\/2;} for(t=i-1;t>=0;t--){ printf("%d",a[t]);} } 思路:反复地将n除以2取余数;将取出的余数用数组存放;由于先取出的是低位数据,后...

怎么用c语言循环编写二进制转为十进制
include<stdio.h> int change(int n){ if(n\/10==0)return n;else return n%10+change(n\/10)*2;} main(){ int n;printf("请输入一个二进制数:\\n");scanf("%d",&n);printf("它的十进制形式为: %d\\n",change(n));system("pause");return 0;} ...

相似回答