Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript在16位片段中添加64位整数_Javascript - Fatal编程技术网

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

使用JavaScript在16位片段中添加64位整数,javascript,Javascript,我有两个对象,this和that,每个对象的属性分别为a、b、c和d,它们分别表示最高、第二高、第二低和最低的16位片段,每个片段表示64位无符号整数 这是一种正确的添加它们的方法吗?这种方法在所有情况下都有效吗 它是最有效的,还是可以改进 这段代码中有错误 d%=d%0xffff应为d%=0x10000 c%=0xffff应为c%=0x10000,然后对b和a执行相同的操作 您可以从最低的组件开始,使用下一个组件的进位,而不是先添加然后处理进位: var d = this.d + tha

我有两个对象,
this
that
,每个对象的属性分别为
a
b
c
d
,它们分别表示最高、第二高、第二低和最低的16位片段,每个片段表示64位无符号整数

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


这段代码中有错误

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,否则,如果(a>0xffff)
,则可以报告错误

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;