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

满意答案

00e27ab806e4881f8254fe7ae8741834.png

520wurb

2014.01.02

00e27ab806e4881f8254fe7ae8741834.png

采纳率: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分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值