gpt4 book ai didi

javascript - 使用 JavaScript 在 16 位片段中添加 64 位整数

转载 作者:行者123 更新时间:2023-11-29 20:15:29 25 4
gpt4 key购买 nike

我有两个对象,thisthat,每个对象都有属性 ab cd 分别代表最高、次高、次低和最低的 16 位片段,分别代表一个 64 位无符号整数。

  • 这是添加它们的正确方法吗?在所有情况下都适用吗?
  • 它是最有效的还是可以改进的?

var a = this.a + that.a,
b = this.b + that.b,
c = this.c + that.c,
d = this.d + that.d;
if (d > 0xffff)
c += d >> 16,
d %= d % 0xffff;
if (c > 0xffff)
b += c >> 16,
c %= 0xffff;
if (b > 0xffff)
a += b >> 16,
b %= 0xffff;
if (a > 0xffff)
a %= 0xffff;
this.a = a;
this.b = b;
this.c = c;
this.d = d;

最佳答案

该代码中存在错误。

d %= d % 0xffff;应该是 d %= 0x10000; .

c %= 0xffff;应该是 c %= 0x10000; , 然后对于 b 也是一样的和 a .

您可以从最低的组件开始,然后使用下一个组件的进位,而不是先添加然后处理进位:

var d = this.d + that.d;
var c = this.c + that.c + (d >> 16);
d &= 0xffff;
var b = this.b + that.b + (c >> 16);
c &= 0xffff;
var a = this.a + that.a + (b >> 16);
b &= 0xffff;

这将在 a 中留下可能的溢出, 如果你想忽略你可以做 a &= 0xffff; ,否则会报错if (a > 0xffff) .

关于javascript - 使用 JavaScript 在 16 位片段中添加 64 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160372/

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