计算机体系结构基础知识介绍之简单回顾原码反码补码

2023-11-12

原码

最高位为符号位,0表示正数,1表示负数。

例如:
X = 0b11 (3),四比特表示原码 = 0011(3) ;

X = - 0b11(-3) ,四比特表示原码 = 1011(11) ;

反码

最高位为符号位,0表示正数,1表示负数。

正数的反码等于本身,负数的反码除符号位外,各位取反:

例如:
X = 0b11 (3),四比特表示原码 = 0011(3),对应反码为 = 0011(3) ;

X = - 0b11(-3) ,四比特表示原码 = 1011(11),对应反码为 = 1100(12)  ;

补码是一种用来表示有符号整数的方法,它可以使得加法和减法运算更加简单和统一。负数的补码,是能够和其相反数相加通过溢出从而使计算机内计算结果变为0的二进制码。

补码的表示方法是:

  • 正数的补码就是其本身;
  • 负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+ 1。 (也即在反码的基础上+ 1)

为了方便说明,我们假设使用 8 位二进制数来表示整数。那么,我们可以用下面的例子来说明正数和负数的补码:

  • +5 的原码和补码都是 00000101;
  • -5 的原码是 10000101,其反码是 11111010,其补码是在反码的基础上加 1,即 11111011;
  • +127 的原码和补码都是 01111111;
  • -127 的原码是 10000001,其反码是 11111110,其补码是在反码的基础上加 1,即 11111111;
  • +0 的原码和补码都是 00000000;
  • -0 的原码是 10000000,其反码是 11111111,其补码是在反码的基础上加 1,即 00000000。

使用补码的好处有以下几点:

  • 避免了多种表示方法。使用原码或反码来表示负数时,会出现两种表示 0 的方法:00000000 和 10000000。这样会造成混淆和浪费。而使用补码时,只有一种表示 0 的方法:00000000。
  • 简化了加法和减法运算。使用原码或反码来进行运算时,需要考虑符号位和进位的问题,并且对于不同符号的数还要采用不同的规则。而使用补码进行运算时,只需要按位相加,然后忽略最高位的进位,就可以得到正确的结果。这样可以简化电路设计和计算机指令。
  • 利用了模运算的性质。模运算是指一个计量系统的计数范围,例如时钟的计量范围是 0~11,模为 12。在模运算中,任何有模的计量器都可以化减法为加法运算。例如,在 12 为模的计时系统里,加 10 和减 2 的效果是一样的,因为它们相加等于模。对于二进制系统,模为 2^n ,其中 n 是二进制数的位数。例如,在 8 位二进制系统中,模为 256。那么,-a 的补码就相当于 mod-a ,也就是 256-a 。这样,在进行 a-b 的运算时,就可以用 a+(-b) 的补码来代替。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机体系结构基础知识介绍之简单回顾原码反码补码 的相关文章

随机推荐

  • Vue3中父子组件实现数据双向绑定效果

    父组件
  • MarkDown/README.md文件添加图片

    README md文件添加图片 用MarkDown格式的文档编辑时 需要上传图片 比如往gitHub上的README md中添加一张展示效果图 alt text path to img jpg Title 其中 path to img jp
  • 树莓派设置静态IP记录(整理)

    另外 树莓派直连电脑 设置静态ip 可参考 http blog csdn net liang890319 article details 8639128 树莓派默认使用的是dhcp自动分配ip 而且默认打开SSH服务 当没有显示器的时候 我
  • 面试官:Spring refresh过程是怎样的?

    小熊学Java网站 https javaxiaobear gitee io 每周持续更新干货 建议收藏 1 Spring refresh 流程 refresh 是 AbstractApplicationContext 中的核心方法 负责初始
  • 多模态学习-基于文本和图像信息的商品分类框架

    将文本model和图像model合并为一个model 因为它们包含了互补的信息 对于图像和文本数据 都是用CNN 对图像数据 使用已经在Image Net上训练过的网络 该网络已经具有为自然图像提取丰富特征的能力 利用预先训练的机器学习模型
  • uni-app自定义tabbar

    uni app自定义tabbar 为什么要自定义tabbar呢 虽然说直接在page json里面直接配置性能可能更好点 但是有时候满足不了我们的需求 比如说 需要鉴权的时候 我们就需要通过不同的用户显示不同的底部 首先page json里
  • libevent(7)libevent中的事件event

    一 事件状态 libevent有4种事件状态 分别是 initialized pending active persistent 这4种状态的转换关系如下 1 已初始化 initialized 对应图中的non pending状态 表示事件
  • 【Java异常】Error:java: Compilation failed: internal java compiler error 的解决方案

    一 错误描述 刚刚通过IDEA导入一个新的项目之后 运行报错 如下所示 Error java Compilation failed internal java compiler error 二 错误原因 出现这个错误的原因主要是因为 JDK
  • python 计算cpu占用率

    首先pip install psutil 或者 easy install psutil import psutil import os datetime time def getMemCpu data psutil virtual memo
  • Server 层及整个MySQL体系图

    Server 层及整个MySQL体系图 InnoDB 存储引擎层体系结构图 学习mysql innodb体系结构 这个图不错 再结合innodb存储引擎 效果更佳
  • Visual Studio容器工具要求在构建,调试或运行容器化项目之前运行Docker

    出现此提示 是因为电脑未安装Docker所致 接下来就教大家如何安装Docker 第一步 下载 地址 Install Docker Desktop on Windows Docker Documentation 第二步 安装 1 双击Doc
  • Unity InputSystem学习笔记(一)获取设备按键信息

    键盘 每帧判断 void Update if Keyboard current spaceKey wasPressedThisFrame print 空格键 if Keyboard current dKey wasReleasedThisF
  • qt中添加界面元素后,运行时看不到该界面元素

    问题 在一个qt工程的界面上添加了一个按钮 发现如下问题 这个按钮在代码里无法正确识别 IDE的智能提示里找不到 运行程序后 界面上也看不到该按钮 原因 在工程目录下和编译目录下同时出现ui mainwindow h文件 发生冲突 解决办法
  • React从入门到实战- 企业级实战项目-宜居一

    2019年最新 React从入门到实战 带 React 企业级实战项目 宜居 React基础知识 React基础知识 1 React 学习前期准备 React 学习前期准备 React 学习前期准备 react环境 工程化 webpack安
  • javascript跳转到新页面的三种方法

    1 a标签 a标签 a href http www jb51 net title 脚本之家 Welcome a a href 上一个页面 就是前一个页面 a href 下一个页面 就是后一个页面 a href http www jb51 n
  • 虚拟DOM详细说明

    一 什么是虚拟DOM 虚拟DOM是对真实DOM的抽象 虚拟DOM树是根据真实的DOM树模仿出来的 两者都是节点相同的同一种树形数据结构 一个应用页面一般是由多个元素节点组合嵌套构成的基本骨架 其中某一个节点变化改变都可能会导致连锁反应 如果
  • Android完全退出应用程序 ,太爽了

    return instance 退出栈顶Activity public void popActivity Activity activity if activity null 在从自定义集合中取出当前Activity时 也进行了Activi
  • 多线程测试(一)

    编写一个ThreadTest类 分别通过继承Thread类和实现Runnable接口 两种方式实现两个线程 两个线程执行的任务是实现同一个变量 count 的累加操作 count从1增加到10 每增加1 在控制台输出 执行累加操作的线程的线
  • epoll_create和epoll_create1

    名字 epoll create epoll create1 创建epoll文件描述符 摘要 include
  • 计算机体系结构基础知识介绍之简单回顾原码反码补码

    原码 最高位为符号位 0表示正数 1表示负数 例如 X 0b11 3 四比特表示原码 0011 3 X 0b11 3 四比特表示原码 1011 11 反码 最高位为符号位 0表示正数 1表示负数 正数的反码等于本身 负数的反码除符号位外 各