东辰安华学习网专业分享各种生活知识、常识,和大家一起共勉!

当前位置:首页 > 点子


为什么用补码(为什么计算机中带符号数采用补码表示)

2023-09-15 14:39:12栏目:商业
TAG: 补码  为什么  符号

大家好,今天小编来为大家解答为什么用补码这个问题,为什么计算机中带符号数采用补码表示很多人还不知道,现在让我们一起来看看吧!

本文目录

  1. 为什么计算机中带符号数采用补码表示
  2. 补码为什么加1
  3. 光遇买心为什么要补码
  4. 补码的范围为什么多一个

为什么计算机中带符号数采用补码表示

丢开教科书式的概念,想想为什么要有补码这个东西,为什么符号位会产生。定义:

原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。

机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。

机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。

如果是为了考试,死记即可。但我总想搞清楚为什么计算机里面的数要这样子表达?意义何在?-128的补码为什么是10000000?为什么补码有这么奇怪的运算规则?计算机算减法的时候都需要从源码到补码的计算吗?

思路

计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。

用补数代替原数,可把减法转变为加法。出现的进位就是模,此时的进位,就应该忽略不计。

二进制下,有多少位数参加运算,模就是在1的后面加上多少个0。

补码就是按照这个要求来定义的:正数不变,负数即用模减去绝对值。

补充解释一下“模”的概念,可以参照离散数学里面的环:考虑时钟上时间的计算,假设现在时针指向数字3,若问“6小时前时针指向的数字是几”,则可以:1.将时针逆时针拨动6格。2.将时针顺时针拨动12-6=6格。两者的结果是一样的。这里称12为“模”。故有3时-6个小时=3时+(12-6个小时),这里可以看到将减法转换成加法的过程,即“加上模减去绝对值的差”。所以,假设模是10,有效位数为1,当我们计算9-7的时候:9-7=>9+(10-7)=12,去掉最高的位后,得到2,这是正确的结果。

作者的意思是说,计算机里面所有数都以补码形式保存,加减运算都是补码之间的加法运算。然后作者提出了一个我之前没听过的观点:

补数和补码的定义式里面,根本就没有什么符号位。这最高位的1、0是自然出现的,并不是由人来规定的。

的确,符号位在补码运算里面是“模”,本身并不带符号的意义。因为计算机将加法转换成加上一个“负数”,而负数又以补码的形式表现。补码比源码多一位,从这多出来的一位可以推断出原来数字的正负号,所以成为了符号位。也可以这样认为,留出一位(不全部占满)的原因是要用“模”来表示正负数。

也就是说,不是特意留出一个符号位,用1和0来表示正负号。而是补码运算可以用最高位来表示正负,所以符号位诞生了。

那么为什么-128的补码是10000000?可以这样理解。-128是一个负数,所以它的补码是它的“模”减去它的绝对值,即:

那么为什么负数补码等于源码的反码加一呢?可以这样推导:

由此我们得知,在计算机里面所有的数字都以补码形式存储。127存成01111111,-127存成11111111,算减法就变成算加法了,尽管你看到的是“-”号。

补码为什么加1

简单地说,补码就是反码加1。

计算机中为什么要使用补码呢?主要原因:1、使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃

光遇买心为什么要补码

因为价格有差异,需要把少的钱补上

补码的范围为什么多一个

因为:在补码表示中0的补码表示是唯一的。[+1]补=[-1]补因此在补码表示中,就多出一个编码10000000把10000000的最高位既看做符号位又看做数值位,其值为-128原码表示中,10000000=[-0]原所以补码的表示范围就扩展一个。

为什么用补码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于为什么计算机中带符号数采用补码表示、为什么用补码的信息别忘了在本站进行查找哦。