补码 = 反码 + 1?再这样算你就输了

您所在的位置:网站首页 1010110的补码是多少 补码 = 反码 + 1?再这样算你就输了

补码 = 反码 + 1?再这样算你就输了

2023-08-24 09:08| 来源: 网络整理| 查看: 265

补码 = 反码 + 1?再这样算你就输了 一、前言

刚学大学计算机基础时,接触到的第一个难点,可能就是原码、反码、补码了。 原码和反码很好理解,但补码是个什么鬼东西就很容易把人搞糊涂。 今天这篇文章,你将会理解有关补码的一切答案,比如:

为什么计算机中是以补码形式保存数字?反码+1太难算了,有没有快速计算补码的方法为什么 0 开头的表示整数,1 开头的表示负数?为什么正数的原反补都是它本身,而负数的补码得按位取反后 + 1?什么是补码?补了个什么东西?为什么一个最大的数,+1以后会变成最小的数?为什么对补码再求一次补码,就能得到原码?

本篇文章将以补码最原始的定义,带你解决这些问题

二、补数

在理解补码之前,需要先理解补数。 补数的概念我不好直接告诉你,但我举个例子,你就很容易理解了,例如:

3 关于 20 的补数是 17 5 关于 20 的补数是 15 18 关于 20 的补数是 2

这里的20我们把它称作模(这里给它取个名儿纯粹是为了后面讲解方便),相信你已经理解了补数的概念:所谓补数,就是把一个数补到模值的数。 就像3,要把它补到模值 20, 那就补 17 就 OK 就像5,要把它补到模值 20 ,那就补 15 就 OK 有了补数的概念,再理解补码,就是轻而易举的事情

三. 编码

进入到信息时代,数据由计算机进行存储。由于计算机只认识二进制,所以对数据进行编码必不可少。 当初是怎么进行最开始的编码的呢,不妨想象一下下面的场景

一群头发稀少的科学家正骂骂咧咧地激烈地讨论着…

吴用导:今天呢,把大家聚在一起,就是要跟大家商量一下这个数字的编码的问题咋个解决,大家有什么好的想法不妨说出来听听甄小白:这个简单,我们直接用数字的二进制不就行了,比如 5 用 101,7 用 111吴用导:听上去可行,不过正数这么表示没问题,负数咋整?甄小白:陷入沉思…贾蒙辛:老大,我有个主意,咱这样你看行不吴用导:赶紧说,老哥等会儿还要做头发护理贾蒙辛:那好,为了方便,我就拿一个字节举例子了啊。一个字节是 8 位,请问能表示最小的数是什么?甄小白:0000 0000, 8 个 0 呗,继续贾蒙辛:那能表示最大的数是什么?甄小白:1111 1111, 8 个 1贾蒙辛:从0000 0000到 1111 1111一共多少个数字?吴用导:256 个,这谁不知道,你搞快点,别扯犊子了贾蒙辛:哈哈,好。那是这样啊,你看,咱总共有 256 个数字,咱把它分成两半,一半表示正数,另一半表示负数甄小白:你是说用0- 127表示0 和正数,然后128 - 255表示负数?贾蒙辛:真聪明,没错吴用导:好像还行啊,就是感觉怪怪的,0- 127表示0 和正数很简单,直接就对应过来了,但那128 - 255表示负数你打算怎么对应?贾蒙辛:用补数。比如说 250这个数,它关于 256的补数是 6,那咱们就干脆用250表示 -6甄小白:那照你这么说,意思就是用251表示-5,252表示-4,253表示-3这样喽?贾蒙辛:是这么回事儿,不过这是一个字节的情况,两个字节的话和这个也类似吴用导:好像还行欸。等等,那按照你的意思,127 还表示 127,然后 127 + 1 = 128 ,按照你那个对应规则,128 它表示的是…-128?最大的正数 +1 以后变成最小的负数,这有点扯淡啊贾蒙辛:嘿嘿嘿,以后注意不越界就好呗。对了,用我这套规则,我还发现一个有趣的规律吴用导:赶紧说,搞快点贾蒙辛:你看,在一个字节中,只要最高位是0,那么它必然小于等于127,也就是说,它表示一个正数或 0甄小白:对欸,那最高位是 1,说明它肯定大于等于128,那就一定表示一个负数吴用导:挺好的,那就这么着吧。既然这个对应规则来源于补数,对应二进制编码,咱就叫补码好了 三、结束

上面的对话,其实已经解决了之前提到的部分问题,至于其它几个问题,就当看完文章的思考题了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3