当前位置:首页 > JavaScript

js实现补码

2026-01-31 17:46:51JavaScript

js实现补码

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实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现文字滚动

js实现文字滚动

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

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js图片轮播的实现

js图片轮播的实现

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

js 实现日历

js 实现日历

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

js实现刷新

js实现刷新

刷新当前页面 使用 location.reload() 方法可以强制刷新当前页面。该方法接受一个布尔参数,默认为 false,表示从缓存中加载页面;设为 true 时强制从服务器重新加载。 // 从…