鱼C论坛

 找回密码
 立即注册
查看: 5246|回复: 6

如何快速计算出一个数是2的多少次方?

[复制链接]
发表于 2012-5-30 05:28:38 | 显示全部楼层 |阅读模式
1鱼币
如题,求解!

需要过程详细点,谢谢!

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-30 07:30:59 | 显示全部楼层
话说有库函数可以用
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-30 08:51:47 | 显示全部楼层
移位吧,速度快!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-30 09:30:49 | 显示全部楼层
最快的速度肯定是查表,空间换时间,3#移位的方式对2^N有效,3^N次就要复杂很多
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-30 09:41:55 | 显示全部楼层
  1. assume cs:code,ds:data

  2. data segment
  3. ;结果保存表,以此类推可以扩展或演变为3^N次方
  4. dwPowerTable    dd  0001h,0002h,0004h,0008h,0010h,0020h,0040h,0080h
  5.                 dd  0100h,0200h,0400h,0800h,1000h,2000h,4000h,8000h
  6.                 dd  00010000h,00020000h,00040000h,00080000h
  7.                 dd  00100000h,00200000h,00400000h,00800000h
  8.                 dd  01000000h,02000000h,04000000h,08000000h
  9.                 dd  10000000h,20000000h,40000000h,80000000h
  10. data ends


  11. code segment

  12. start:  mov ax,data
  13.         mov ds,ax
  14.         
  15.         mov bx,15   ;要求2的次方,可以自己设定,这里举个例子
  16.         shl bx,2    ;寻找偏移表,一个结果占4个字节
  17.                     ;2^15次方对应的是第60个
  18.                     
  19.         mov ax,ds:dwPowerTable[bx]    ;求得结果,ax保存低位
  20.         mov dx,ds:dwPowerTable[bx+2]  ;DX保存高16位
  21.         
  22.         mov ax,4c00h
  23.         int 21h   
  24.    
  25. code ends

  26.     end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-6-2 20:54:13 | 显示全部楼层
不断的乘以啊!输入乘以本身的次数就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-8-22 10:05:52 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 11:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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