gpt4 book ai didi

JavaScript:long long number 的位移位

转载 作者:可可西里 更新时间:2023-11-01 01:21:14 25 4
gpt4 key购买 nike

我需要在 JavaScript 中将一个值按位移动 64 次。但是 JavaScript 在 32 之后开始舍入。

例如:

for(var j = 0; j < 64; j++)
{
mask = mask << 1;
console.log(mask);
}

这会打印从 01073741824 的值,然后循环并开始打印 0

最佳答案

“在 Java 中,按位运算符与整数一起工作。JavaScript 没有整数。它只有 double float 。因此,按位运算符将其数字操作数转换为整数,执行其业务,然后转换“他们回来了。在大多数语言中,这些运算符非常接近硬件并且非常快。在 JavaScript 中,它们离硬件很远而且非常慢。JavaScript 很少用于进行位操作。” - 道格拉斯·克罗克福德,Javascript: The Good Parts

重点是您实际上没有任何理由使用按位运算符。只需乘以或除以 2^numbits。

您的代码应该是:

for(var j = 0; j < 64; j++) {
mask = mask * 2;
console.log(mask);
}

或者一般来说:

function lshift(num, bits) {
return num * Math.pow(2,bits);
}

你明白了。

关于JavaScript:long long number 的位移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/337355/

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