Skip to content
On this page

16.数值的整数次方

题目

实现 pow(xn) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。

注意点

  • JavaScript中默认都是带符号的整数,总共还是32位(包括符号位),数值范围从 -2^31 到 2^32 - 1。

  • JavaScript实际表示用64位标准双精度存储的,1位符号位11位指数位52位尾数位

  • >><< 表示算数移位,移动时考虑符号位

  • >>><<< 表示逻辑移位,整体左右移,缺位补0

  • 对于测试用例2:-2147483648

    • 转化为正数2147483648,超出了范围,js内部会自动转化为无符号正数
    • 如果用算术移位,转成正数的2147483648(超出带符号表示默认转成无符号表示)正好是2^31,(10000……,31个0)最高位占用了符号位,在第一次循环的时候还是按照无符号整数进行运算进入到循环,当进行移位运算的时候如果选算术移位,就会把这个无符号数看成带符号数进行运算,移位之后n变成负数,退出循环,所以这种情况下循环只进行了一次。

代码