正数和负数在内存中是以什么形式存储的,都是补码? 为什么呢?

RT

正数和负数在内存中是以什么形式存储的,都是补码? 为什么呢?

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

为什么采用补码?

最终目的,就是为了“简化硬件”。

其实,补码,还是很好理解的。

但是,从“原码反码取反加一”开始学,就理解不了了。

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

计算机,每次进行计算,位数,是固定的。

八位的计算机,参加计算的,就只有八位二进制数。

16 位机、32 位机、64 位机 ...,也都是雷同的。

那么:

数值  0,八位机存放的是:0000 0000,这没有疑问吧?

数值 +1,就是 0+1。即:0000 0001,你可以理解吧?

数值-1,那显然就是 0-1 了。

你用二进制算算看,差,是多少?

忽略借位,八位的差,就是:1111 1111 (十进制 255)。

255,这就是被称为:-1 的补码。

数值-X,怎么存放?

那就按照 0-X 算呗! 肯定可以得出这种正数的结果。

负数(-X) 的补码,一定是个正数。

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

补码,是一个“代替负数计算”的正数。

这说法,对吗?

你可以验算一下。

比如,等式: 1-1 = 0,显然是成立的。

转换为补码:[+1]补 + [-1]补 = [0]补,也必须成立。

代入数值,计算如下:

  0000 0001 + 1111 1111  = (1) 0000 0000

你舍弃了进位,这等式就成立了。

这说明:

  用补码(正数),就可以代替负数。

  同时,加法,也就代替了减法运算。

  但是,进位,必须舍弃。

另外,正数和令,就不存在转换成补码的问题了。

  当然,也可以说,正数,本身就是补码。

采用了补码之后,就能简化算法,由此也就可以简化硬件。

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

常见的问题:为什么数据在内存里是以补码的形式存储?

正确答案是:简化算法,从而简化硬件。

 这也就是:补码存在的意义。

补码的理论,就是这么简单。

老外算术不行,二进制运算,弄不利索。

这才编造了“原码反码取反加一符号位不变”。

而计算机中,根本就不用原码和反码。

我们的计算机老师脑子不好用,被老外骗得滴溜滴溜转。

跟着老外绕了老大一圈,也讲不明白“补码的存在意义”。

学生学完了,也不知道:为什么数据在内存里是以补码的形式存储?

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

如果已知计算机的二进制数,怎么求它代表的数值呢?

数值,小学学过为两类:自然数、整数。

自然数,即 0 ~ ∞,在计算机中,称为:无符号数。

整数,包括“正整数负整数和零”,称为:带符号数。

计算机中的 n 位二进制数,每一位,都对应一个十进制数。

如果 n = 8,每一位对应的十进制数则是:

  128、64、32、16、8、4、2、1。

注意:其中的最高位,对于“带符号数”来说,则是-128

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

例如,一个八位的补码是:1000 1011。

如果是“带符号数”,其首位,就是-128

其余的位,都是正数。

那么,各位之和,就是:128 + 8 + 2 + 1 = 117。

如果是“无符号数”,其首位,就是 128。

各位之和,就是:128 + 8 + 2 + 1 = 139。

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

例如,另一个八位的补码是:0000 1011。

首位是 0? 这就不用关心有无符号了。

其代表的数值,就是:8 + 2 + 1 = 11。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-03
是以二进制方式储存的,既补码形式,正数前是0,负数前加1
第2个回答  2014-03-08

但是正数的补码就是它本身,负数的补码是它的绝对值取反加一本回答被网友采纳
相似回答