如何在JavaScript中从高32位和低32位部分创建64位整数时防止过大的值

How to guard against too-large values when creating a 64-bit integer from high and low 32-bit parts in JavaScript?

本文关键字:32位 整数 64位 创建 JavaScript      更新时间:2023-09-26

所以JavaScript的整数是内部64位的浮点值,因此可以精确地支持从-253到+253(-9,007,199,254,740,992到+9,007,199,254,740,992)。

你可以在我们非常有趣的线程中阅读所有关于它的内容:什么是JavaScript的Max Int?一个数字在不失去精度的情况下可以达到的最高整数值是多少?

在我的项目中,我需要64位偏移量到非常大的文件。我可以通过组合高低对32位值来生成它们。我不需要完整的64位范围,所以JavaScript的限制是好的。

但是我不确定如何检查给定的一对32位值不会导致JavaScript范围之外的数字。

我如何核对这个?

我们只需要检查是否有高于53位的ON位,或者高于32位高位部分的21位。

只取高32位和&~((1 << 21) - 1)(这将清除32位的所有低21位),以检查是否有任何位超过限制。如果结果为0,则数字将在限制范围内。