恭喜,你发布的帖子
发布于 2015-12-03 00:27:36
6楼
我提一个思路,看看可行不:
1、48位无符号数,最大值为281474976710655,要转成10进制显示,就是取10的余数。但是S7200的取余指令只支持16位整数,太小了。
2、所以,先要截短这个大数,把它表示成:2814749*100000000 + 76710655,也就是把大数先除10^8,获得整数和余数,整数最大2814749,是个22位,余数则不大于10^8。
3、没有办法,这种除法操作,只能用最原始的移位比较+减法,就象我们普通做除法时的竖式。最多移位比较的次数为22次。
4、好,已经拆成两个较小的大数了,再继续分。2814749=281*10000 + 4749, 76710655=7671*10000 + 0655。这个计算可以用32位整数指令了。
5、最终获得4个小于10000的数,一一用DIV指令拆解成10进制个位数。
请填写推广理由:
分享
只看
楼主