使用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;