【计算机原理篇】原码、反码和补码

注意:计算机实际上是按照补码进行存储的,对计算机来说没有原码和反码这种东西,原码和反码只是为了方便我们理解而定义的一种概念。

一、原码

正数的原码就是它本身,负数的原码最高位为1。

如果用一个字节来存储整数,那么20的原码就是0001 0100,-20的原码就是1001 0100

二、反码

正数的反码跟原码一样,负数的反码按位取反,符号位不变。

如果用一个字节来存储整数,那么20的反码就是0001 0100,-20的反码就是1110 1011

三、补码

正数的补码跟原码一样,负数的补码是反码加1。

如果用一个字节来存储整数,那么20的补码就是0001 0100,-20的补码就是1110 1100

四、计算机为什么不用原码和反码,而采用补码来计算

原因是使用原码或者反码计算结果是错误的,补码才是正确的。

下面我们来看一下分别使用原码、反码和补码进行计算的结果

1、原码计算

   0001 0100(20)

+ 1001 0100(-20)

-------------------------------

    10101000(-40)

20和-20的和是-40,结果显然不对

2、反码计算

   0001 0100(20)

1111 0101(-10)

--------------------------------

    0000 1001(9)

20和-10的和是9,结果显然不对

3、补码计算

   0001 0100(20)

1110 1100(-20)

-------------------------------

    0000 0000(0)

用反码计算的结果正确

五、为什么一个字节能表示的整数范围是-128到-127

首先最高位为0,其他位为1,就代表最大的整数,就是0111 1111(127),那么最小的数应该是1000 0001(-127)

那么问题来了,一个字节如何表示-128?

我们结合上面的原码、反码和补码知识知道,我们知道1000 0000(-0)+0111 1111(+127)=1111 1111(-1)。这种情况下我们发现补码的计算也不准了,-0与127的和居然是-1。刚刚不是还说用补码计算时正确的吗?

为了解决这种特殊情况,我们认为反码1000 0000表示的是-128,不再表示-0(-0本身也没有意义,用0就可以了),然后1000 0000(-128)+0111 1111(+127)=1111 1111(-1),漂亮,所有情况下,补码的计算都是正确的了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用友邮件撤回怎么操作_用户体验原则——“操作可控”

对于用户的误操作,提供二次确认或者撤销的功能,这样可提高用户的操作可控性。好设计应该是值得信任,也容易被相信的。在要求用户执行某一动作时,尽量帮他们理解为什么这个操作是必要的。每一步都需要借助诚实和清晰的表述来建立信…

蛋白结构建模与优化_最终幻想: 无中生有的蛋白质从头设计

作者简介: 刘源 北京大学化学与分子工程学院/力文所零.导读近几年,蛋白质结构预测领域连续取得重大突破。首先是【AlphaFold】,在可以充分利用共进化信息结合深度神经网络生成空间约束条件并降低相空间的搜索,极大地帮助了蛋白质的结构建模&a…

【JAVA基础篇】彻底搞懂拆箱装箱

什么是装箱拆箱? Java有8种基本数据类型,并且为这8种类型提供了包装器类型。比如说int类型的包装器类型是Integer。 装箱是指将基本数据类型转换成对应的包装器类型。拆箱是指将包装器类型转换基本数据类型。 Integer i 10; //自动装箱 int n i; …

gcn在图像上的应用_每日摘要|基于CNN 特征的图像卷积网络识别杂草和作物

文章信息标题:CNN feature based graph convolutional network for weed and crop recognition in smart farming期刊:《 Computers and Electronics in Agriculture》第一单位:山东农业大学在线日期:2020-05-13Highlights1.提出了…

安卓超过两行就加省略号_基础标点符号使用规则详解—8.省略号

省略号省略号,是标点符号家族中的比较特殊的一个符号,它是由六个小圆点组成。省略号的用法不止省略文字的作用。它还有以下几种用法。1用法一(一)表示重复词语或列举的省略。例:1、果园里有桃树、梨树、杏树、枇杷树……真的是种类齐全。2、那…

【Java基础篇】你真的了解构造器吗?

构造器是方法名和类名相同,并且没有返回值的特殊方法,可以使用的关键字有public, protected & private,或者省略(表示default) public class Constructor {//构造方法public Constructor(){}//实例方法public void…

【JAVA中级篇】线程池

上一篇文章已经介绍了线程的基本概念以及线程相关的API,下面来看一下线程池 一、线程池框架 1、线程池的优点 重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。 能有效控制线程池的最大并发数,避免大量线程之间因互相抢夺系…

kafka 脚本发送_Kafka笔记归纳(第五部分:一致性保证,消息重复消费场景及解决方式)...

写在开头:本章是Kafka学习归纳第五部分,着重于强调Kafka的事一致性保证,消息重复消费场景及解决方式,记录偏移量的主题,延时队列的知识点。文章内容输出来源:拉勾教育大数据高薪训练营。一致性保证水位标记…

【Java基础篇】集合排序

所谓集合排序是指对集合内的元素进行排序。 集合工具类Collections中提供了两种排序算法,分别是: Collections.sort(List list)Collections.sort(List list,Comparator c) Collections.sort(List list)这种方式需要对象实现Comparable接口,…

语言nomogram校准曲线图_预测模型的概率校准

1.背景 机器学习分为:监督学习,无监督学习,半监督学习(也可以用hinton所说的强化学习)等。在这里,先简要介绍一下监督学习从给定的训练数据集中学习出一个函数(模型参数),当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入输出,也可以说是特征和…

eclipse debug 工程源码时出现source not found问题解决

问题描述:使用eclipse debug启动应用,并且打断点在工程的源码上面,提示source not found。 问题解决: 1、选中工程,右键Debug As》Debug Configurations 2、在Java Application下面选中需要debug的程序,然…

代码中有个get是啥意思_是时候秀一波了,甩掉get和set,Lombok让代码更简洁

前言前几天有个新来的同事(实习生)惊讶的对我说:我们的代码里好多错误,我的程序本地都启动不了。我一脸懵逼的质问他:目前线上的代码,怎么会有问题吗?他不服气的说:你来看嘛,就是有问题&#xf…

JavaWeb工程师知识图谱

一个工作快三年的的Java菜鸟,总结梳理了一下JavaWeb工程师必须掌握的一些知识点(持续更新中。。。)。 预览效果 xmind原始文件 百度云盘 链接:https://pan.baidu.com/s/1hp3MWGOX2I8APw75Suu52Q 提取码:j6w6

【Java中级篇】基于jxl读写Excel文件遇到的问题

发生异常,并且提示:unable to recognize ole stream 遇到这个问题需要将Excel文件另存为Excel 97-2003(*.xls)

松下a6伺服x4接线图_2021中山东凤松下温控器回收价高同行

2021中山东凤松下温控器回收价高同行西门子TDC,西门子存储卡,西门子变频器等全线西门子自动化产品。小汪 满意的价格,快的付款速度,热诚欢迎全国各地朋友洽谈合作。具体回收业务:SIEMENS可编程控制器 1、SIMATIC,S7系列…

eclipse启动发生Failed to load JNI shared library

今天启动eclipse发生下面的情况 从网上知道是eclipse和jdk位数不一致导致的。 输入java -version ,查看JDK是多少位,显示64位的就是64位JDK,未显示的为32位的JDK。 eclipse的安装目录下有一个叫eclipse.ini的配置文件,打开后能看到 x86_64说…

imx226_相机选型器

-- 全部 --AR1820HS (8)CMV2000-2E5C1PP (2)CMV2000-3E12M1PP (2)CMV2000-3E5M1PP (2)CMV4000-3E12M1PP (1)CMV4000-3E5C1PP (5)CMV4000-3E5M1PP (5)EV76C560ABT (25)EV76C560ACT (25)EV76C570ABT (23)EV76C570ACT (23)EV76C661ABT (20)IMX174LLJ-C (8)IMX174LQJ-C (8)IMX178LL…

算法的时间复杂度和空间复杂度的原理

一、算法分析 如何判断一个算法的好坏呢?首先算法必须要正确,这是最基本的要求。其次: 算法花费的时间算法占用的空间小(辅助存储空间)算法要容易调试,测试,理解,编码,…

5条件筛选功能_一分钟,彻底学会Excel高级筛选,坐等升职加薪!

Excel中高级筛选是普通筛选的加强,能够实现更加复杂的筛选功能。请您看下面的示例图:数据示例图如果要求筛选出班级为2班且语文成绩大于100分的数据,那么使用普通筛选连续筛选两次就可以得到结果。请您看下面的操作演示:普通筛选操…

数据结构之树【完善中】

一、树的概念 树是一种分组的层次结构。 树的定义: 树是n(n>0)个数据元素的集合,在任意一棵非空树中,有如下特征 有且只有一个根结点(无前驱结点)当n>1时,其他结点被分为若干个互不相交集合,并且…