找回密码
 欢迎注册
楼主: liangbch

[擂台] 求一个无符号整数的10进制位数

[复制链接]
发表于 2009-2-8 21:26:23 | 显示全部楼层


呵呵
==================================
不知道是否还能找到一个15条内的非预存数据的版本
==================================
跳转表的版本显得有点啰嗦了
虽然执行路径短
而且存在预存数据
即使是外部汇编
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-9 10:32:28 | 显示全部楼层

回复 59# 无心人 的帖子

将 sbb r,i 改成 sbb r,r,速度将更快(尤其在早期的CPU上),虽然要增加一条指令:
  1. mov edx, n
  2. mov eax, 10
  3. xor ecx, ecx
  4. cmp edx, 1000000000 //10
  5. sbb eax, ecx
  6. cmp edx, 100000000 //9
  7. sbb eax, ecx
  8. cmp edx, 10000000 //8
  9. sbb eax, ecx
  10. cmp edx, 1000000 //7
  11. sbb eax, ecx
  12. cmp edx, 100000 //6
  13. sbb eax, ecx
  14. cmp edx, 10000 //5
  15. sbb eax, ecx
  16. cmp edx, 1000 //4
  17. sbb eax, ecx
  18. cmp edx, 100 //3
  19. sbb eax, ecx
  20. cmp edx, 10  //2
  21. sbb eax, ecx
  22. cmp edx, 1   //1
  23. sbb eax, ecx
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-9 10:53:59 | 显示全部楼层


CMP 也应该是吧
不过增加的就多了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-19 03:07 , Processed in 0.042472 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表