gpt4 book ai didi

javascript - 我如何在 Javascript 中对大于 2^32 的数字进行按位和运算?

转载 作者:可可西里 更新时间:2023-11-01 02:42:43 26 4
gpt4 key购买 nike

例如,如何得到137438953472 & 137438953472的正确答案?

如果操作数介于 2^32 和 2^53(max int) 之间,则 Javascript 返回 0。

最佳答案

好的,这就是我想出的,只测试了无符号整数 < 2^53:

编辑:修复了部分结果被解释为已签名时的错误

function and( op1, op2 ) {

var mod = Math.pow( 2, 32 ),
op1mod = op1 % mod,
op2mod = op2 % mod,
op164to32,
op264to32,
res32, res64, res;

op1 -= op1mod;
op2 -= op2mod;

res32 = ( op1mod & op2mod ) >>> 0;


op164to32 = op1 / mod;
op264to32 = op2 / mod;
res64 = ( op164to32 & op264to32 ) >>> 0;

res = res64 * mod + res32;
return res;
}

and( 137438953473, 137438953473 )
//137438953473
and( 137439087606, 137438953473)
//137438953472
and( 0xCAFECAFECAFE, 0xBABEBABEBABE )
//152550976162494

用 windows 64 位计算器确认结果正确:P

关于javascript - 我如何在 Javascript 中对大于 2^32 的数字进行按位和运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10045674/

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