ZigBee 无符号长整型除法
时间:10-02
整理:3721RD
点击:
今天碰到一个很蛋疼的问题,我用长整型变量 a=32279638,我除以32,ZigBee会输出2736(具体是多少,没看清,但是蛋疼的它竞然只有4位数啊,这就不科学的);然而我用C++写代码运算,他毫无问题,得到1008738
贴下代码呗
你的公式是什么样的?
是a=a/32?
现在才登,我现在贴代码和结果
unsigned long mhz19Read(void)
{
unsigned long count1,count2,value,th,tl;
//float th,tl;
//unsigned int n1=0,n2=0,tl,th,value,v1,v2,flag=0;
while(MHZ19IO)
{
}
while(!MHZ19IO)//以上两步,寻找起始点
{
}
while(MHZ19IO)
{
count1+=1;
}
while(!MHZ19IO)
{
count2+=1;
}
th=count1/32;
tl=count2/32/1000;
value=2000*(th-2)/(th+tl-4);
return th;
}
value=mhz19Read();
sprintf(TxData,"%ld",value);
UartSendString(TxData, sizeof(TxData));
count1相当于一个自加器,计数用的
这是转换返回值时,转换情况
CC2530是51的核,51是8位的,计算过程中数值偏大会溢出。做这种长整型运算要分步运算,否则在计算过程中,一旦值超过范围会被截取掉,可以在计算的时候加上强制转换
上面是TI社区给的答案