1.原码

将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形式。

例如,假设用8位表示一个数,则+10的原码是00001010,-10的原码是10001010。

直接使用原码在计算时会有麻烦,例如,(1)10+(-1)10=0。如果直接使用原码,则

(00000001)2+(10000001)2=(10000010)2

这样计算的结果是-2也就是说,使用原码直接参与计算可能会出现错误的结果。所以,原码的符号位不能直接参与计算,必须和其他位分开,这样会增加硬件的开销和复杂性。

2.反码

正数的反码与原码相同。负数的反码符号位为1,其余各位为该数绝对值的原码按位取反。例如,-11的反码是11110100。

同样,对上面的加法,使用反码的结果是:

(00000001)2+(11111110)2=(11111111)2

这样的结果是负0。而在人们普遍的观念中,0是不分正负的。反码的符号位可以直接引参与计算,而且减法也可以转换为加法计算。

3.补码

正数的补码与原码相同。负数的补码是该数的反码加1,这个加1就是“补”。例如-11的补码为11110100+1=11110101

再次做以上的加法,是这样的:

(00000001)2+(11111111)2=(00000000)2

这说明,直接使用补码进行计算的结果是正确的。

对一个补码表示的数,要计算其原码,只要对它再次求补即可。由于补码能使符号位与有效值部分一起参与运算,从而简化了运算规则,同时它也使减法运算转换为加法运算,进一步简化计算机中运算器的电路,这使得在大部分计算机系统中,数据都使用补码表示。

4.移码

移码又称为增码,移码的符号表示和补码相反,1表示正数,0表示负数。也就是就是说,移码是在补码的基础上把首位取反得到的,这样使得移码非常适合于阶码的运算,所以移码常用于表示阶码。

对于正数:原码和反码,补码都是一样的,都是正数本身。

对于负数:原码是符号位为1,数值部分取X绝对值的二进制。

反码是符号位为1,其它位是原码取反。

补码是符号位为1,其它位是原码取反,未位加1。也就是说,负数的补码是其反码未位加1

移码就是将符号位取反的补码

一:在计算机中,实际上只有加法运算,减法运算也要转换为加法运算,

  乘法转换为加法运算,除法转换为减法运算。

二:在计算机中,对任意一个带有符号的二进制,都是按其补码的形式进行运算和存储的。 之所以是以补码方式进行处理,而不按原码和反码方式进行处理,是因为在对带有符号位的原码和反码进行运算时,计算机处理起来有问题。(具体原因见理解原码,反码与补码) 而按补码方式,一方面使符号位能与有效值部分一起参加运算,从而简化运算规则. 另一方面使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计

正零:00000000 负零:10000000 这两个数其实都是0,但他们的原码却有不同的表示。 但是他们的补码是一样的,都是00000000

特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)

[10000000]补

=[10000000]反+1

=11111111+1

=(1)00000000

=00000000(最高位溢出了,符号位变成了0)

有人会问

10000000这个补码表示的哪个数的补码呢?

其实这是一个规定,这个数表示的是-128

所以n位补码能表示的范围是

-2^(n-1)到2^(n-1)-1

比n位原码能表示的数多一个

又例:

1011

原码:01011

反码:01011 //正数时,反码=原码

补码:01011 //正数时,补码=原码

移码:11011 //原数+10000

-1011

原码:11011

反码:10100 //负数时,反码为原码取反

补码:10101 //负数时,补码为原码取反+1

移码:00101 //原数+10000

0.1101

原码:0.1101

反码:0.1101 //正数时,反码=原码

补码:0.1101 //正数时,补码=原码

移码:1.1101 //原数+1

-0.1101

原码:1.1101

反码:1.0010 //负数时,反码为原码取反

补码:1.0011 //负数时,补码为原码取反+1

移码:0.0010 //原数+1

总结:

在计算机内,定点数有3种表示法:原码、反码和补码

所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

三:补码加、减运算公式

    1):补码加法公式

   [X+Y]补 = [X]补 + [Y]补

2):补码减法公式

[X-Y]补 =  [X]补-[Y]补 = [X]补 + [-Y]补

其中:[-Y]补称为负补,求负补的办法是:对补码的每一位(包括符合位)求反,且未位加1.

四:由补码求原码

  已知一个数的补码,求原码的操作分两种情况:

   如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。n

  如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1;其余各位取反,然后再整个数加1。

原码、反码和补码的表示方法:

(1) 原码:在数值前直接加一符号位的表示法。

例如: 符号位 数值位

[+7]原= 0 0000111 B

[-7]原= 1 0000111 B

注意:a. 数0的原码有两种形式:

[+0]原=00000000B [-0]原=10000000B

b. 8位二进制原码的表示范围:-127~+127

(2)反码:

正数:正数的反码与原码相同。

负数:负数的反码,符号位为“1”,数值部分按位取反。

例如: 符号位 数值位

[+7]反= 0 0000111 B

[-7]反= 1 1111000 B

注意:a. 数0的反码也有两种形式,即

[+0]反=00000000B

[- 0]反=11111111B

b. 8位二进制反码的表示范围:-127~+127

2)补码的表示: 正数:正数的补码和原码相同。

负数:负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。

例如: 符号位 数值位

[+7]补= 0 0000111 B

[-7]补= 1 1111001 B

补码在微型机中是一种重要的编码形式,请注意:

a.采用补码后,可以方便地将减法运算转化成加法运算,运算过程得到简化。正数的补码即是它所表示的数的真值,而负数的补码的数值部份却不是它所表示的数的真值。采用补码进行运算,所得结果仍为补码。

b.与原码、反码不同,数值0的补码只有一个,即 [0]补=00000000B。

c.若字长为8位,则补码所表示的范围为-128~+127;进行补码运算时,应注意所得结果不应超过补码所能表示数的范围。

转载于:https://www.cnblogs.com/RzCong/p/5947955.html

原码,反码,补码,移码的概念以及各自的用途和优点相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 原码 反码 补码 移码

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

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

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

  9. 【原码, 反码, 补码的基础概念和计算方法】

    数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念. 原码就是符号位加上数字的二进制表示, 即用第一位表示符号, 其余位表示值. 反码的表示方法 ...

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

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

最新文章

  1. 什么是启发式?什么是产生式?
  2. java 通配符 日期_java – 使用带有通配符支持的SimpleDateFormat解析日期字符串(例如* yyyy * MM * dd * hh * mm * ss)...
  3. Spring版本特性:Spring各个版本引入了哪些新特性?
  4. 「权威发布」2019年大学生电子设计竞赛获奖名单
  5. asp.net 拦截html,关于c#:如何在-ASPNET-Core-中实现全局异常拦截
  6. jzoj4616-[NOI2016模拟7.12]二进制的世界【平衡规划,dp】
  7. python3.7.3配置环境变量_配置环境变量切换到python3.7
  8. h5+js调取相机做取景框_Ps绘制超复杂逼真相机图标
  9. ideahtml标签不提示_「系统自带标签」如何帮门店区分价值顾客?| 早8点141期
  10. stringr | 文本处理方法(Ⅰ-3):字符串处理函数(下)
  11. 从 0 到 1 实现 React 系列 —— 1.JSX 和 Virtual DOM
  12. opengl 加载贴图Unknown DIB file format问题
  13. 《Web漏洞防护》读书笔记——第12章,CSRF跨站点请求伪造防护
  14. 计算机与酒店管理大学论文,酒店管理系统的设计与实现
  15. (软件测试)代码覆盖(语句覆盖,分支覆盖,条件覆盖,条件组合覆盖,路径覆盖)
  16. 如何使用加密狗加密自己程序
  17. 计算机科学基础 浙大学分,Zju生存指南-学(上)
  18. 学神的“诞生”-2014清华大学本科生特等奖学金答辩观后感
  19. 数学公式中的希腊字母读音
  20. 软件使用说明书V1.0发布

热门文章

  1. 13篇文章,教你学会ES6知识点
  2. iPhone 7 256GB版停售原因分析
  3. linux下怎么修改mysql的字符集编码
  4. 数据结构之链表、栈和队列 java代码实现
  5. Windows Phone本地数据库(SQLCE):11、使用LINQ查询数据库(翻译) (转)
  6. 用css3简单实现进度条
  7. 探索Java语言与JVM中的Lambda表达式
  8. SQL2005中利用PIVOT实现分组统计
  9. XML+SQL=数据库的未来?
  10. 基于BCH的SLP代币超过1000种,探秘SLP的内部生态