请大家帮忙分析一下一段代码的 思路,谢谢大家。
[复制链接]
邀请:@led2015
@vincentc543
@吾妻思萌
@wangerxian
参与回复
请大家帮忙分析一下,下面这段代码的思路,它实现的功能是
【将 long 型 变量 NUM 的数值 按压缩BCD码的 形式存入 数组 , 比如 NUM=1234567890 (注意 此处是10进制,不是 16进制的 0x1234567890) 存入数组 A[9] 后 A[0]=0X12 (注意是16进制的0X12 ,不是10进制的12 其余均是) A[1]=0X34 A[2]=0X56 A[3]=0X78 A[4]=0X90】
我看不明白以下代码是如何实现这一功能的,请大家帮忙 分析一下,谢谢大家。
unsigned char adjbcd(unsigned char gg)
{
unsigned char nn=gg, mm=gg, mn;
mm=mm+0x3;
if((mm&0x08 )==0x08) nn=mm;
mn=nn;
nn=nn+0x30;
if((nn&0x80)==0x80) mn=nn;
return mn;
}
//;///////////////////////////////////
void bcd(unsigned int tt)
{
unsigned int ss, kl=tt;
_Bool GGT;
q1=0x0 ;
q2=0x0;
q3=0x0;
ss=0 ;
GGT=1;
while(GGT)
{
q1=q1<<1;
if( (q2&0x80)==0x80) q1|=0x01;
q2=q2<<1;
if ((q3&0x80)==0x80) q2|=0x01;
q3=q3<<1;
if ((kl&0x8000)==0x8000) q3|=0x01;
kl=kl<<1;
ss++;
if(ss<16)
{
q3=adjbcd(q3);
q2=adjbcd(q2);
q1=adjbcd(q1);
}
else GGT=0;
}
}
|