Java Bitshift取代Math.pow

4 java math pow

我需要用bitshift替换Java中的Math.pow.

for (int i = n - 1; i >= 0; i--)
    Math.pow(16, n - i - 1)
Run Code Online (Sandbox Code Playgroud)

其中n是十六进制数的长度.
13304fb意味着n = 7.
它基本上是将十六进制转换为十进制.

现在我需要用Bitshift替换Math.pow.我无法弄清楚,因为n可能会像它想要的一样大.

Lal*_*and 6

  1. 16^(n - i -1) = 2^(4 * (n - i -1))
  2. 2^x = 1 << x.

因此:16^(n-i-1)=1 << (4 * (n -i -1))

(使用^符号表示"对于权力",而不是异或)