C51里如何实现处理 比 long 型更大的数?

fycom200 2008-03-27 04:24:44
我要操作的数据大于 0XFFFF FFFF了请问在C51里如何解决这个问题?
...全文
882 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sovish1 2010-09-22
  • 打赏
  • 举报
回复
看一下,不从
  • 打赏
  • 举报
回复
10楼的具有借鉴意义
yangb2014# 2008-03-30
  • 打赏
  • 举报
回复
同意5楼,二楼理解有误。。。
fycom200 2008-03-29
  • 打赏
  • 举报
回复
希望楼主讲讲更详细你的需求,多大数?要什么结果?

如果楼主需要处理>NN亿的数据,而且执着于个/十位的精确,就当俺前面没说吧
===============================================================
首先谢谢你的帮助!
我要存储的数据类型是无符号整数,只是现在用 unsigned long 型的数据类型装不下了,至少需要扩展一个字节,而我希望有个简单的方法来实现,系统原有的 unsigned long 类型也可以用。 实际上就是当 unsigned long 型的数据溢出后怎么检测到?这样我就可以自己把进位存入另外的字节。
汇编里比较容易实现,但我又不想为这个问题而把整个程序用汇编重写一便(痛苦得要死...)
fycom200 2008-03-29
  • 打赏
  • 举报
回复
请各位给个思路先,实际上也就是2进制运算(我要在C51里实现)
fycom200 2008-03-29
  • 打赏
  • 举报
回复
我是要实现5字节长的2进制数(也就是40位2进制)加法,减法和除法,
用户 昵称 2008-03-29
  • 打赏
  • 举报
回复
类似这样,这是以前俺写的一个8位长整数转化成字符串的程序

void
hextodec( unsigned char *hex, unsigned char *dec, unsigned char length, unsigned char displength )
{
unsigned char xdata temp[ 23 ];
unsigned char xdata j, k;
unsigned char xdata this4;
char xdata i, t;

memset( temp, 0, 22 );

for( i = length - 1; i >= 0; i-- )
for( j = 0; j < 2; j++ )
{
this4 = *( hex + i ) >> ( ( 1 -j ) * 4 ) & 0x0f;
//得到一个4位的数
for( k = 0; k < 22; k++ )
temp[ k ] *= 16; //扩大16倍
for( k = 0; k < 22; k++ )
{ //进位
temp[ k + 1 ] += temp[ k ] / 10;
temp[ k ] -= temp[ k ] / 10 * 10;
}
temp[ 0 ] += this4;
for( k = 0; k < 22; k++ )
{ //进位
temp[ k + 1 ] += temp[ k ] / 10;
temp[ k ] -= temp[ k ] / 10 * 10;
}
}
//搞定了
memset( dec, 0, displength + 1 );
for( t = displength; t >= 0; t-- )
*( dec + displength - t - 1 ) = temp[ t ] + 48;
i = 0;
while( *( dec + i ) == '0' && ( i < displength - 1 ) )
{
*( dec + i ) = ' ';
i++;
}
}
用户 昵称 2008-03-29
  • 打赏
  • 举报
回复
自己写,
kdliang031220 2008-03-29
  • 打赏
  • 举报
回复
用单片机进行数据运算?
zhujinqiang 2008-03-28
  • 打赏
  • 举报
回复
希望楼主讲讲更详细你的需求,多大数?要什么结果?

如果楼主需要处理>NN亿的数据,而且执着于个/十位的精确,就当俺前面没说吧。
zhujinqiang 2008-03-28
  • 打赏
  • 举报
回复
楼主不要激动,
确实float和unsigned long、signed long都是4字节,
但是float牺牲了精度,扩大了表数范围。
lbing7 2008-03-27
  • 打赏
  • 举报
回复
1。自己做数据类型的处理,把一切都看成0和1
2。用字符来表示(其实也是另一种自己处理)

C51里如何实现 5字节长度的无符号整型数加减乘除?

自己写,呵呵

。。。

相信在学C或是JAVA的时候,都会有一个技巧叫:大数运算

LZ可以试试

fycom200 2008-03-27
  • 打赏
  • 举报
回复
C51里如何实现 5字节长度的无符号整型数加减乘除?
fycom200 2008-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhujinqiang 的回复:]
float
[/Quote]
太不负责了,LONG 都装不下 float的怎么可以?何况我是 整数,非浮点数
zhujinqiang 2008-03-27
  • 打赏
  • 举报
回复
float

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧