当前位置:首页 > JavaScript

js实现补码

2026-04-05 10:01:12JavaScript

补码的基本概念

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

js实现补码

实现补码转换的步骤

将十进制数转换为补码的二进制表示:

js实现补码

  1. 确定数值的绝对值的二进制表示。
  2. 如果是负数,对二进制表示取反(0变1,1变0)。
  3. 对取反后的结果加1。

JavaScript实现补码转换

以下是一个将十进制数转换为指定位数的补码二进制字符串的函数:

function toTwosComplement(num, bits) {
    // 处理正数
    if (num >= 0) {
        return num.toString(2).padStart(bits, '0');
    }

    // 处理负数
    const positiveValue = (-num).toString(2).padStart(bits, '0');
    let inverted = '';
    for (let i = 0; i < positiveValue.length; i++) {
        inverted += positiveValue[i] === '0' ? '1' : '0';
    }
    const twosComplement = (parseInt(inverted, 2) + 1).toString(2);
    return twosComplement.slice(-bits);
}

使用示例

console.log(toTwosComplement(5, 8));   // 输出: "00000101"
console.log(toTwosComplement(-5, 8));  // 输出: "11111011"

从补码还原十进制数

以下函数将补码二进制字符串转换回十进制数:

function fromTwosComplement(binaryStr) {
    const bits = binaryStr.length;
    const num = parseInt(binaryStr, 2);

    // 检查最高位是否为1(负数)
    if (binaryStr[0] === '1') {
        return -( (~num & ( (1 << bits) - 1 ) ) + 1 );
    }
    return num;
}

使用示例

console.log(fromTwosComplement("00000101"));  // 输出: 5
console.log(fromTwosComplement("11111011"));  // 输出: -5

注意事项

  • 补码的位数需要足够表示数值范围,否则会出现溢出。
  • JavaScript的位运算符(如~>>等)默认使用32位补码表示。

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

相关文章

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js画图实现

js画图实现

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

js实现文字滚动

js实现文字滚动

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

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…