如何快速计算出一个数是2的多少次方?
如题,求解!需要过程详细点,谢谢!
话说有库函数可以用 移位吧,速度快! 最快的速度肯定是查表,空间换时间,3#移位的方式对2^N有效,3^N次就要复杂很多 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 不断的乘以啊!输入乘以本身的次数就行了 看看
页:
[1]