当前位置:首页 > JavaScript

js实现二进制加法

2026-04-05 02:08:50JavaScript

二进制加法的基本概念

二进制加法遵循与十进制加法类似的规则,但进位发生在2而不是10。每一位相加的结果可以是0、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);
        i--;
        j--;
    }

    return result;
}

实现方法二:转换为十进制相加后转回

将二进制字符串转换为十进制数,相加后再转换回二进制。注意大数精度问题。

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

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

对于超过JavaScript安全整数范围的二进制数,可以使用BigInt避免精度问题。

js实现二进制加法

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

注意事项

  • 方法二在输入字符串较长时可能丢失精度,因为JavaScript的Number类型有安全整数限制。
  • 方法三适用于任意长度的二进制字符串,推荐在实际项目中使用。
  • 输入验证是必要的,确保输入字符串只包含'0'和'1'。

示例测试

console.log(addBinary('11', '1')); // 输出 '100'
console.log(addBinary('1010', '1011')); // 输出 '10101'

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

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js手势实现

js手势实现

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

js 实现日历

js 实现日历

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

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…