当前位置:首页 > JavaScript

js实现补码

2026-01-31 17:46:51JavaScript

js实现补码

补码的基本概念

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

实现补码转换的步骤

十进制转补码

  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
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

vue.js实现轮播的方法 使用第三方库(如Swiper) 安装Swiper库: npm install swiper 在Vue组件中引入Swiper: <template>…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #34…

js实现论坛

js实现论坛

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