当前位置:首页 > JavaScript

js实现二进制加法

2026-03-02 01:18:47JavaScript

二进制加法原理

二进制加法遵循与十进制类似的规则,但只有0和1两个数字。基本规则如下:

  • 0 + 0 = 0
  • 0 + 1 = 1
  • 1 + 0 = 1
  • 1 + 1 = 10(即结果为0,进位1)

实现方法一:逐位相加

将两个二进制字符串从最低位开始逐位相加,处理进位:

js实现二进制加法

function addBinary(a, b) {
    let result = '';
    let carry = 0;
    let i = a.length - 1;
    let j = b.length - 1;

    while (i >= 0 || j >= 0 || carry > 0) {
        const digitA = i >= 0 ? parseInt(a[i--]) : 0;
        const digitB = j >= 0 ? parseInt(b[j--]) : 0;
        const sum = digitA + digitB + carry;
        result = (sum % 2) + result;
        carry = Math.floor(sum / 2);
    }

    return result;
}

实现方法二:转换为十进制计算

先将二进制转换为十进制,相加后再转回二进制:

function addBinary(a, b) {
    const numA = parseInt(a, 2);
    const numB = parseInt(b, 2);
    const sum = numA + numB;
    return sum.toString(2);
}

注意:此方法在数字较大时可能丢失精度,因为JavaScript的数值有范围限制。

js实现二进制加法

实现方法三:使用BigInt处理大数

对于超长二进制字符串,可以使用BigInt避免精度问题:

function addBinary(a, b) {
    const bigA = BigInt('0b' + a);
    const bigB = BigInt('0b' + b);
    return (bigA + bigB).toString(2);
}

边界情况处理

需要考虑空字符串、不等长字符串等情况:

function addBinary(a, b) {
    if (!a) return b || '0';
    if (!b) return a || '0';

    // 其他实现代码...
}

性能优化

对于超长字符串,方法一(逐位相加)比方法二(十进制转换)更可靠,但方法三(BigInt)是现代JavaScript的最佳选择。

标签: 加法js
分享给朋友:

相关文章

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

js尚未实现

js尚未实现

JavaScript 尚未实现的功能 JavaScript 作为一门不断发展的语言,仍有一些功能尚未被原生支持或标准化。以下是一些常见的尚未实现的功能或特性: Promise.any() 的替代方案…

vue.js实现循环

vue.js实现循环

Vue.js 实现循环的方法 在 Vue.js 中,循环通常通过 v-for 指令实现,用于遍历数组或对象并渲染列表。以下是几种常见的循环实现方式: 遍历数组 使用 v-for 遍历数组时,可以获取…

js实现vue-router

js实现vue-router

Vue Router 的基本实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是一个简单的 Vue Router 实现示例。 安装 Vue Route…