600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > c语言中循环转换 C语言中如何用循环实现十进制数转换成二进制数

c语言中循环转换 C语言中如何用循环实现十进制数转换成二进制数

时间:2021-01-31 14:15:46

相关推荐

c语言中循环转换 C语言中如何用循环实现十进制数转换成二进制数

满意答案

520wurb

.01.02

采纳率:43%等级:11

已帮助:6818人

//*********************************************

//不使用求余和除法的二进制转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

{

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

da1[i] = 0;

for(m=0;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;

}

}

}

00分享举报

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。