我想将一个 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(使用前将#替换为@)