当前位置:首页 > JavaScript

js实现二进制加法

2026-01-31 10:04:04JavaScript

二进制加法实现原理

二进制加法遵循与十进制加法类似的规则,但进位条件是2而非10。每一位相加时可能出现四种情况:

  • 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;
}

数值类型实现方法

对于较小的二进制数(不超过JavaScript安全整数范围),可以转换为十进制计算:

js实现二进制加法

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

位运算优化方案

使用位运算可以避免显式的进位处理:

function addBinary(a, b) {
  let x = parseInt(a, 2);
  let y = parseInt(b, 2);
  while (y != 0) {
    let carry = x & y;
    x = x ^ y;
    y = carry << 1;
  }
  return x.toString(2);
}

处理前导零

某些情况下需要保持固定位数输出:

function addBinaryWithPadding(a, b, length) {
  const sum = addBinary(a, b);
  return sum.padStart(length, '0');
}

注意事项

  • 输入验证应确保字符串只包含'0'和'1'
  • 大数运算建议使用字符串方法
  • 结果可能需要去除前导零(根据具体需求)
  • 位运算方法有32位整数限制

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

相关文章

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js 实现拖拽

js 实现拖拽

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