由于计算机的二进制原理,计算机只能识别0、1组合成的二进制数字,不管给计算机下达什么指令,最终都要翻译成一连串0或1的组合。所以这些二进制之间的运算也要通过一系列的规则与表达方式进行,这些运算表达方式包括原码、反码和补码,下面按照逻辑顺序进行论述。

一、原码运算

最开始时,二进制之间需要进行运算,设计的计算规是用原码计算,原码的表示方式即:最高位表示数的符号即正、负,其余位表示该数的绝对值的机器数(二进制数),例如下表:

十进制 二进制 原码
1 1 00000001
2 10 00000010
3 11 00000011
-1 10000001
-2 10000010
-3 10000011

1+2用原码来计算过程:00000001+00000010=00000011,结果3,正确。

但是这时在涉及到负数的运算时,会出现下面的问题:

3-1(减去一个数相当于加上它的相反数,即3+(-1))用原码来计算:

00000011+10000001=10000100,结果为-4,显然错误。

因此,用原码计算涉及到负数的运算时会出现错误,为了解决这个问题,提出反码表达方式。

二、反码运算

反码的表示方式:正数的反码是它本身,负数的反码最高位不变,其余位取反,如下表:

十进制 二进制 原码 反码
1 1 00000001 00000001
2 10 00000010 00000010
3 11 00000011 00000011
-1 10000001 11111110
-2 10000010 11111101
-3 10000011 11111100

反码的出现及表达方式解决了涉及到负数的运算:

因为正数的反码与原码相同,所以正数与正数之间的运算不受影响,涉及到负数也能够进行正确运算:

2-3:00000010+11111100=11111110,反码为11111110的数的原码是10000001,转换为十进制是-1,正确。

1-3:00000001+11111100=11111101,反码为11111101的数的原码是10000010,转换为十进制是2,正确。

但是下面的情况就不能使用反码进行计算了:

2-1用反码计算过程:00000010+11111110=(1)00000000,最高位溢出省略,反码是00000000的数的原码是00000000,为0,错误。

3-1反码计算过程:00000011+11111110=(1)00000001,最高位溢出省略,反码是00000001的数的原码是00000001,为1,错误。

1-1用反码计算过程:00000001+11111110=11111111,反码是11111111的数的原码是10000000,结果-0,因为不可能会出现-0的情况,所以此时反码的运算不再适用,错误。

为了避免这种情况,提出补码。

三、补码运算

补码的表示方式:正数的补码是其本身,负数的补码是其反码加1:

十进制 二进制 原码 反码 补码
1 1 00000001 00000001 00000001
2 10 00000010 00000010 00000010
3 11 00000011 00000011 00000011
-1 10000001 11111110 11111111
-2 10000010 11111101 11111110
-3 10000011 11111100 11111101

1+1用补码计算过程:00000001+00000001=00000010,结果2,正确

1-2用补码计算过程:00000001+11111110=11111111,结果-1,正确。

这时再去计算2-1:

2-1补码运算:00000010+11111111=(1)00000001,补码为00000001(最高位溢出)的数的原码是其本身,即00000001,为十进制的1,正确。

3-1反码计算过程:00000011+11111111=(1)00000010,补码为00000010(最高位溢出)的数的原码是其本身,即00000010,为十进制的2,正确。

1-1用补码计算过程:00000001+11111111=00000000,补码为00000000(最高位溢出)的数的雨那么是其本身,即00000000,为十进制的0,正确。

备注:

用原码计算结果也是原码,用反码计算结果也是反码,用补码计算结果也是补码计算机里有加法器,没有减法器,所以减法都是转换成加法计算的用8位二进制数表示,这是由计算机字长决定的,你也可以用16位表示,同样最高位表示符号位。计算机都是用补码进行计算,我们输入的数据计算机会自行转换成相应的补码。

原码、反码、补码运算相关推荐

  1. (转)java 原码反码补码计算 以及 取反运算,原码反码补码运算公式

    [README] 转自: https://www.zhangshilong.cn/work/289454.html 1. 原码.反码.补码: (1)在Java中,所有数据的表示方式都是以补码形式来表示 ...

  2. 关于 原码 反码 补码 位运算

    二进制 原码:最高位为符号位,0为正  1为负 正数的原码 反码 补码 都是相同的 反码:负数的反码为原码符号位不变 其它对应变化(1变0 0变1) 补码:等于 反码+1 3^-3 =? 运算过程 - ...

  3. day017:Java进制转换、原码反码补码、位运算、位移运算符

    一.进制介绍: 1.进制:指进位制,表示某一位置上的数,运算时是逢X进一. 十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一. 2.Java中默认的数值都是十进制,如果要输入其他进制,在数值 ...

  4. 由Python位运算到原码反码补码

    采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版.本书以Python2.5为主,但笔记主要以Python3.6为主. 一.Python位运算操作符 Python支持标准位运 ...

  5. 原码反码补码之间运算转换

    1. 正数的原码=反码=补码 2. 负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位+ ...

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

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

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

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

  8. java进制原码_Java 一一 进制、原码 反码 补码、移位操作

    进制 二进制 和 十进制 相互转换 十进制 和 十六进制 相互转换 原码,反码,补码 原码.反码.补码: 在计算机内, 有符号数有三种表示法: 原码, 反码, 补码. 所有的数据的运算都是采用 补码 ...

  9. 原码 反码 补码 详解

    一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放 ...

  10. python二进制反码例题_python中的进制转换和原码,反码,补码

    python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...

最新文章

  1. 【camera】5.相机内嵌图像处理(ISP)介绍
  2. 计算机行业越来越卷,AI都会刷LeetCode了,网友:比我强
  3. 排序算法 | 堆排序,算法的图解、实现、复杂度和稳定性分析
  4. Java Spring MVC框架搭建(一)
  5. C语言高级技术之--游戏属性修改器(背景故事)
  6. P5273 【模板】多项式幂函数 (加强版)
  7. 《MySQL——redo log 与 binlog 写入机制》
  8. [深度学习]为什么梯度反方向是函数值下降最快的方向?
  9. 比dropout更好的方法_经营公司有更好的方法
  10. oracle 导入数据时主键丢失,Oracle 插入数据 返回主键
  11. oracle中使用java存贮过程
  12. springboot+postsql 做接口api
  13. Java-前后端分离-单点登录(SSO二级跨域和跨一级域名)
  14. 关于上采样方法总结(插值和深度学习)
  15. APR学习-消息池的设计与使用
  16. 美版iPhone4卡贴解锁
  17. OpenAI:ChatGPT 自动写代码功能测试
  18. python大作业外星人入侵,python 项目1 外星人入侵总结 2021-02-25
  19. Cesium加载大数据量地下管线
  20. 影子跟随算法:FPS游戏中游戏同步性的实现

热门文章

  1. 有什么虚拟主播配音软件可以支持文字配音?
  2. K3 Cloud中有关锁库与预留的功能解释
  3. Java POI WPS另存为的XLSX Excel报错Package should contain a content type part [M1.13]
  4. Xcode 6更新默认不支持armv7s架构
  5. html中重置的单词,html涉及的英语单词!
  6. 【硬件架构的艺术】学习笔记(4)流水线的艺术
  7. 国寿投资控股拟成重庆信托二股东 金融业混业经营提速
  8. [Android]美国VOA英语学习软件,无广告
  9. 计算机桌面进入安全模式,电脑只能进入安全模式咋办
  10. 酷狗java秋招笔试题