如何将64位整数拆分为两个32位整数

2023-11-21

我想将一个 64 位整数拆分为两个 32 位整数:

var bigInt = 0xffffff;

var highInt = bigInt >> 8 // get the high bits 0xfff
var lowInt = bigInt // cut of the first part (with &)?

console.log(highInt); // 0xfff
console.log(lowInt); // 0xfff

// set them together again
var reBigInt = (highInt << 8) + lowInt;

不幸的是,获得 highInt 和 lowInt 都不起作用...有人能给我答案如何使用按位运算符吗?

regards


EDITJavaScript 表示整数使用 IEEE 双精度格式,因此没有办法在不损失精度的情况下存储任意 64 位整数,除非通过自定义大整数库。对可能被裁剪的值进行按位运算显然没有意义。


一般来说,对于支持 64 位整数的语言:

64 位模式是0xffffffffffffffff。要提取高 32 位,需要移位 32:>> 32。要提取低 32 位,只需将它们与 32 位相加:& 0xffffffff.

你的原则是正确的——你关于要移动或屏蔽多少位的算术是错误的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将64位整数拆分为两个32位整数 的相关文章