当前位置:首页 > 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 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…

js尚未实现

js尚未实现

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