当前位置:首页 > 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 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js 实现日历

js 实现日历

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