当前位置:首页 > JavaScript

js实现二进制加法

2026-03-02 01:18:47JavaScript

二进制加法原理

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

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

实现方法一:逐位相加

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

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的数值有范围限制。

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

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

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

边界情况处理

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

js实现二进制加法

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

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

性能优化

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

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

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…