本帖最后由 aresc 于 2010-6-23 13:35 编辑
之前有个帖子关于这个问题的算法,好像就是这个版块的。
类似下述方法:
1000 = 0x3E8, 假如9865存在两个字节A[2],其中A[0]为高字节,A[1]为低字节,全部为无符号数。
求千位数N4如下:
int N4 = 0;
while ((A[0] > 0x03) || ((A[0]==0x03) && (A[1]>=0xE8)))
{
if (A[1] < 0xE8)
{
A[0] -= 1; // carry bit from low byte
}
A[1] -= 0xE8;
A[0] -= 0x03;
N4++;
}
上述while结束以后,N4就是千位的数字,并且A[2]数组里的数小于1000,可以用类似的方法继续求百、十位的数字,个位的数字就是求完十位数字之后A[2]中的剩余值。十位数字可以单字节计算了。
|