= 0; --i) { int c -6ren">
gpt4 book ai didi

java - 仅使用按位运算符计算 16 的指数

转载 作者:行者123 更新时间:2023-11-30 07:58:13 25 4
gpt4 key购买 nike

如果我使用的循环如下所示:

String string = "DF3";
for (int i = string.length() - 1; i >= 0; --i) {
int c = string.charAt(i);

convertedHex += (i << 4);

}

在不使用 Math.pow()、另一个循环或乘法的情况下,如何计算 Math.pow(16, i)?具体来说,我如何使用按位运算符来做到这一点?

最佳答案

您可以转换i 16 的次方,观察 16=24,因此 16i=24*i,并且 2i = 1<<i 。因此,16i= 1<<i*4 ,可以重写为1<<(i<<2)以避免乘法。

但是,您不需要直接计算 16 的幂。您可以通过在循环中重复乘以 16 来构造数字,即

convertedHex = (convertedHex << 4) + nextHexDigit;

注意: int c = string.charAt(i)为您提供字符的 UNICODE 代码点,而不是相应数字的值。请改用此代码:

int nextHexDigit = Character.digit(string.charAt(i), 16);

关于java - 仅使用按位运算符计算 16 的指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32343347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com