目录

一、原码、反码、补码、移码的概念

1. 真值

2. 机器数

1. 原码

2. 反码

3. 补码

4. 移码

二、原码、反码、补码、移码的转换

1. 原码转反码

2. 原码转补码

3. 原码转移码

三、总结


一、原码、反码、补码、移码的概念

1. 真值

二进制数和十进制数一样有正负之分。书写时可以用"+"和"-"来表示数据的符号,这种书写格式称为真值。

例如:十进制的+3和-5,二进制的+011和-101都是真值。

2. 机器数

由于数据只有正、负两种符号,因此在计算机中很自然就采用二进制的0和1来表示数据的符号,由符号和数值一起编码表示的二进制数称为机器数或机器码。常用的机器数有原码、反码、补码和移码。

例如:(这里的机器数都是原码)1,0001第一位表示符号位,1表示负数,逗号将符号位和数值位区分开,逗号后面的是数值位,0001是二进制,所以转换为十进制后,真值就是 -1;

再比如   0,101表示的十进制数的真值是+5。

1. 原码

原码就是符号化的数值,其编码规则简单直观:正数符号位用0表示,负数符号位用1表示,数值位保持不变。

例如:

x=+0.1101,则[x]原=0.1101;x=+1101,则[x]原=01101

x= -0.1111,则[x]原=1.1111; x= -1111,则[x]原=11111

原码数据表示简单直观,只需将符号位加上二进制数的绝对值即可。但原码存在两个机器0,这会给数据运算带来麻烦。另外原码的加减法运算复杂,符号位不能直接参与运算。加法运算需要“同号求和,异号求差”,减法运算需要“一号求和,同好求差”,求差时还需要先比较大小,然后用大数减去小数,最后结果的符号选择也相对复杂。显然,利用原码作为机器数在实现加减法运算方面是不方便的,原码在计算机中目前仅仅用于表示浮点数的尾码。

2. 反码

反码又称1的补码,其符号位和原码相同,真值为正数时,反码和原码相同;真值为负数时,反码数值位为真值数值位取反。

例如:

x=+0.1101,则[x]反=0.1101;x=+1101,则[x]反=01101

x= -0.1111,则[x]反=1.0000;x= -1111,则[x]反=10000

反码的符号位和原码相同,当真值为负数时,数值位需要逐位取反。同样反码也存在+0和-0两个0.反码的加减运算较原码略简单,其符号位可以直接参与运算,加法运算直接将反码相加即可,但最高位进位要从运算结果最低位相加(循环进位)。减法运算只需要将被减数的反码加上减数负数的反码即可,同样也要采用循环进位的运算方法。但尽管如此,现代计算机中并没有采用反码进行数据表示和运算,这是因为人们找到了更好的编码——补码。

3. 补码

计算机中的二进制数据都有字长的限制,数据最高位进位的位权值就是模数,运算结果超过模数的部分都会被自动舍弃,所以计算机二进制数据的运算属于典型的有模运算,非常适合采用补码进行表示和运算。

例如:

x=+0.0101,则[x]补=0.0101;

x= -0.0101,则[x]补=1.1011;

x= -0.0000,则[x]补=0.0000;

x= -1.0000,则[x]补=1.0000;

补码的表示相对原码更加复杂,但其只有唯一的0,符号位可以直接参与运算,运算时符号位的进位作为模会自动舍弃,其独特的表示方法使得减法运算可以转换成加法运算,大大方便了二进制的运算。目前计算机中普遍采用补码表示有符号整数。

4. 移码

移码只用于定点整数的表示,通常用于表示浮点数的阶码。其编码方式是直接将真值x加一个常数偏移量。

例如:

x=+1010110,则[x]移=11010110;

x= -1010110,则[x]移=00101010;

移码具有以下特点:

① 移码的符号位中0表示负数,1表示正数;

② 同一数值的移码和补码除符号位相反外,其他各位相同;

③ 移码中0的表示也唯一,具体表示为100000……。

二、原码、反码、补码、移码的转换

1. 原码转反码

当原码的真值为正数时,反码的机器数就等于原码的机器数

当原码的真值为负数时,反码的机器数等于原码的机器数取反(符号位不变)

例如:

x=+0.1101,则[x]反=0.1101;x=+1101,则[x]反=01101

x= -0.1111,则[x]反=1.0000;x= -1111,则[x]反=10000

2. 原码转补码

当原码的真值为正数时,补码的机器数就等于原码的机器数

当原码的真值为负数时,补码的机器数等于原码的机器数取反再加1(符号位不变)

例如:

x=+0.0101,则[x]补=0.0101;

x= -0.0101,则[x]补=1.1011;

x= -0.0000,则[x]补=0.0000;

x= -1.0000,则[x]补=1.0000;

简单来说,原码的反码加1就是补码

3. 原码转移码

当原码的真值为正数时,移码的机器数等于原码,但是符号位要改变

当原码的真值为负数时,移码的机器数等于原码机器数取反加1(符号位取反)

例如:

x=+1010110,则[x]移=11010110;

x= -1010110,则[x]移=00101010;

简单来说,原码的补码数值位不变,符号位取反就是移码

三、总结

① 原码、反码、补码、移码都是机器数的表示方法,其实转换为人类所理解的数(真值)都是一样的,但是人类的习惯性思维对反码、补码、移码理解比较困难,一般我们需要将它转换为原码再转换成十进制理解。

例如:1,00010(1表示符号位,00010表示数值位)是一个机器数的补码,我们想知道它的真值,需要先将其转换为原码,它的原码为1,11110,符号位为1,说明它是个负数,数值位为11110,是二进制,转换为十进制是30,所以该机器数的真值是-30。

② 当真值为正数时,反码、补码都等于原码,移码数值位等于原码,符号位取反即可。

③ 原码、反码机器数表示的零有正负之分;补码、移码机器数表示的零只有一个(即正零和负零相等)。

【计算机组成原理】原码 反码 补码 移码相关推荐

  1. 计算机组成原理——基本组成 进制转化 奇偶校验 原码 反码 补码 移码 移位 原码补码乘法除法 IEEE754 加法器ALU

    笔记来源于王道考研视频 第一章 通过电信号传递信息(低电平代表0,高电平代表1) 计算机系统 计算机系统=硬件+软件 软件 系统软件 应用软件 操作系统,数据库管理系统(DBMS),标准程序库(编程时 ...

  2. 【计算机组成原理】原码 反码 补码 移码的转换

    原码 反码 补码 移码的转换 这三种机器码都是二进制数据的表现形式,可以表现正数和负数. 原码是可以直接表现出数据的正负和大小. 正数的原码.反码和补码都是相同的. 反码用于原码和补码的转换的功能. ...

  3. 计算机中的原码,计算机中的原码反码补码移码

    计算机中的原码反码补码移码 原码 数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对 ...

  4. [例题详解]真值 机器数概念 | 原码 反码 补码 移码 概念及加减计算

    目录 真值和机器数 原码 反码 补码 移码 对比记忆 | 原 反 补 移码 加减法 | 原码 补码 结语 | 大学生学习复习资料 真值和机器数 真值:-5.+10 机器数(带符号数)(= 符号位 [0 ...

  5. 原码, 反码, 补码, 移码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  6. 【软考学习2】数据表示——原码 反码 补码 移码

    原码 反码 补码 移码是软考必考的项目,所以需要对其概念.计算方式和取值范围进行总结. 零.使用场景 原码 反码 补码 移码都是计算机中表示数据的方式,各有所长,对于我们来说,都需要加以学习. 软考中 ...

  7. 原码 反码 补码 移码

    原码 反码 补码 移码 在计算机内,机器数分为无符号数和有符号数 无符号数表示正数 没有符号位 原码:最高位为符号位 正数为0 负数为1 反码:原码符号位不变 其余位取反 补码:反码+1 移码:反码的 ...

  8. 原码 反码 补码 移码(变补)补码与移码的作用

    定义 正数: 原码=反码=补码 负数: 原码:符号位+数值位 (符号位0为正数,1为负数) eq: -7 :10000111 反码:符号位不变,其它位取反:11111000 补码:反码+1:11111 ...

  9. 关于计算机中 原码, 反码, 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  10. 2.2.1 定点数的表示 原码 反码 补码 移码

    没有未来的未来不是我想要的未来 o(╥﹏╥)o (つД`)(ノへ ̄.)哭了 学习的是定点数的表示,那我们首先来认识一下什么叫定点数与定点数相对应的另一个概念叫做浮点数所谓定点数就是指小数点的位置固定不 ...

最新文章

  1. 计算机网络技术专业毕业大作业答案,计算机网络技术大作业考核要求A卷
  2. OpenGL 与 GLSL 版本号
  3. JavaScript中Window.event详解
  4. C#中的IntPtr类型(指针等用)
  5. 如何使用autotools工具
  6. 边工作边刷题:70天一遍leetcode: day 73
  7. java外部接口图解_java代码实现访问网络外部接口并获取数据的工具类详解
  8. ivona tts语音合成引擎_高端玩家!树莓派 + Node.js 实现语音机器人
  9. 从零打造 Vue 聊天组件
  10. 为什么要使用boost::enable_shared_from_thisT
  11. objective-C nil,Nil,NULL 和NSNull的小结
  12. python交通流预测算法_对各种交通流预测模型的简要分析
  13. 复试口语常见话题整理以及华师18 19年topic
  14. java 导出word文件,支持导出表格和图片
  15. Windows 10电脑使用VMware虚拟机安装macOS苹果系统[一站式保姆级别教程]
  16. 为什么电脑计算机里没有桌面,为什么电脑开机后桌面上什么都没有?
  17. java每日一讲讲什么_每日一讲.ppt
  18. Kafka可视化管理工具kafka-manager部署安装和使用-已更名为CMAK
  19. 基于JAVA房屋租赁平台计算机毕业设计源码+系统+数据库+lw文档+部署
  20. 天气API接口大全【转】

热门文章

  1. fifaol4服务器不稳定,FIFAonline4卡顿问题怎么解决_FIFAonline4卡顿问题解决方案推荐...
  2. html上下左右居中显示,Html div上下左右居中显示
  3. windows 7重装系统(简单实用)
  4. java装箱与拆箱原理_深入理解Java中的装箱和拆箱
  5. Kubernetes Cluster API(OpenStack)
  6. 天猫精灵联手消费电子行业大牌,狂揽双11天猫平台28项战绩第一
  7. 有关计算机辅助手术方面的SCI,临床类SCI写作,我走过的“小白路”!
  8. 【Matlab优化覆盖】虚拟力算法求解无线网络传感覆盖优化问题【含源码 1187期】
  9. 怎样将网址放在桌面设置成快捷访问方式
  10. 青岛农业大学海都学院计算机专业怎么样,青岛农业大学海都学院就业率怎么样...