不速之客 发表于 2012-5-30 05:28:38

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

如题,求解!

需要过程详细点,谢谢!

wangyexin 发表于 2012-5-30 07:30:59

话说有库函数可以用

xiaolongxia 发表于 2012-5-30 08:51:47

移位吧,速度快!

fujian810 发表于 2012-5-30 09:30:49

最快的速度肯定是查表,空间换时间,3#移位的方式对2^N有效,3^N次就要复杂很多

fujian810 发表于 2012-5-30 09:41:55

assume cs:code,ds:data

data segment
;结果保存表,以此类推可以扩展或演变为3^N次方
dwPowerTable    dd0001h,0002h,0004h,0008h,0010h,0020h,0040h,0080h
                dd0100h,0200h,0400h,0800h,1000h,2000h,4000h,8000h
                dd00010000h,00020000h,00040000h,00080000h
                dd00100000h,00200000h,00400000h,00800000h
                dd01000000h,02000000h,04000000h,08000000h
                dd10000000h,20000000h,40000000h,80000000h
data ends


code segment

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

    end start

a2120258 发表于 2012-6-2 20:54:13

不断的乘以啊!输入乘以本身的次数就行了

阔怀 发表于 2015-8-22 10:05:52

看看
页: [1]
查看完整版本: 如何快速计算出一个数是2的多少次方?