当前位置:首页 > JavaScript

js实现补码

2026-01-31 17:46:51JavaScript

补码的基本概念

补码(Two's complement)是计算机中表示有符号整数的一种方式。其核心思想是通过最高位(符号位)表示正负,其余位表示数值。正数的补码与原码相同,负数的补码是其绝对值的二进制表示取反后加1。

js实现补码

实现补码转换的步骤

十进制转补码

  1. 确定数值的符号和位数(如8位、16位等)。
  2. 如果是正数,直接转换为二进制。
  3. 如果是负数:
    • 计算其绝对值的二进制表示。
    • 对所有位取反(0变1,1变0)。
    • 对结果加1。

补码转十进制

  1. 检查最高位(符号位):
    • 如果是0,直接按无符号二进制转换。
    • 如果是1,表示负数:
      • 对所有位取反。
      • 加1后转换为十进制,最后添加负号。

JavaScript实现示例

十进制转补码(8位)

function decimalToTwosComplement(num, bits = 8) {
    if (num >= 0) {
        return num.toString(2).padStart(bits, '0');
    } else {
        const positive = (-num).toString(2).padStart(bits, '0');
        const inverted = positive.split('').map(b => b === '0' ? '1' : '0').join('');
        const twosComplement = (parseInt(inverted, 2) + 1).toString(2);
        return twosComplement.slice(-bits); // 确保位数正确
    }
}

补码转十进制

function twosComplementToDecimal(binaryStr) {
    const bits = binaryStr.length;
    if (binaryStr[0] === '0') {
        return parseInt(binaryStr, 2);
    } else {
        const inverted = binaryStr.split('').map(b => b === '0' ? '1' : '0').join('');
        const decimal = -(parseInt(inverted, 2) + 1);
        return decimal;
    }
}

使用示例

const num = -5;
const binary = decimalToTwosComplement(num, 8); // 输出 "11111011"
const original = twosComplementToDecimal(binary); // 输出 -5

注意事项

  • 位数需明确指定(如8位、16位),否则可能因溢出导致结果错误。
  • JavaScript的位运算符(如>><<)默认使用32位补码,但直接操作时需注意符号扩展问题。
  • 补码的位数决定了表示范围(如8位补码范围为-128到127)。

标签: 补码js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…