我有两个二进制输入,我也以二进制返回加法结果。
var addBinary = function(a, b) {
var dec = Number(parseInt(a, 2)) + Number(parseInt(b, 2));
return dec.toString(2);
};
对于一些非常大的二进制文件,比如
a = 10100000100100110110010000010101111011011001101110111111111101000000101111001110001111100001101
b = 110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011
我正在输出
110111101100010011000101110110100000011101000101011000000000000000000000000000000000000000000000000
假定的正确输出在哪里
110111101100010011000101110110100000011101000101011001000011011000001100011110011010010011000000000
是因为溢出了吗?如果是这样,Javascript 中对二进制加法溢出有哪些限制?对不起,一堆 1 和 0。
原文由 patrickhuang94 发布,翻译遵循 CC BY-SA 4.0 许可协议
我开发了一个用 Javascript 进行二进制加法的解决方案。
我最初的目标是通过在 Javascript 中复制数字二进制加法器电路中使用的机制(不使用基本转换或按位运算符)来巩固我对二进制逻辑的理解。
您可以在 CodePen 上找到我的原始项目的工作版本。
它对 DOM 所做的工作比您可能需要的要多得多,但是当我输入您的数字时(通过下面提到的调整),我很高兴看到它起作用了!
工作解决方案代码 << 这个项目是从我原来的项目修改而来的,只包含输出正确答案所需的代码。
此解决方案假定
a
和b
是相同长度的字符串。要使用此解决方案,您的输入变量应修改为:(我只是用零填充了
var a
前面缺失的数字。)如您所见,我重新创建了二进制加法器电路的物理实现中使用的所有组件:
半加器:
全加器:
逻辑门:
主功能:
那么,
addBinary(a,b)
产生了正确的答案!我希望我在这里所做的一些事情也能对你有用!