当前位置:首页 > JavaScript

js实现二进制加法

2026-01-31 10:04:04JavaScript

二进制加法实现原理

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

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

数值类型实现方法

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

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实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…