为什么数据在内存里是以补码的形式存储?

2024-11-30 23:45:23
推荐回答(4个)
回答1:

数据在内存里是以补码的形式存储的原因有三点:

1、保证了0的唯一性,保证了数的表示的准确性。

2、让加减可以统一处理,优化了数的运算过程。

3、解决了自身逻辑意义的完整性。

数据在内存里以补码的形式存储是为了简化计算机的结构设计,同时也提高了运算速度。在计算机系统中,数值一律用补码来表示和存储。

扩展资料:

补码的主要特性:

补码为一个负整数(或原码)与其补数(或补码)相加,和为模。在补码的运算中,对一个整数的补码再求补码,等于该整数自身。补码的正零与负零表示方法相同。计算机底层不区分无符号数和补码数,可认为其运算全部当作无符号数处理。

补码使得符号位能与有效值部分一起参加运算,从而简化运算规则。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。

参考资料来源:百度百科-补码

回答2:

数据在内存里以补码的形式存储是为了简化计算机的结构设计,同时也提高了运算速度。

一、补码的释义:

1、计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

2、在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

二、计数系统:

1、 一个计数系统可以存多少容量状态的数,我叫它作为计数系统的Mod。一个计数系统不断地加一,那么它表示的数的状态也会周期性地变化,我叫这个周期的大小叫做Mod。

2、 举个两个例子:一个包含两个bit的存储单位,它可以表示00,加一变成01,加一变成10,加一变成11,再加一又变成了00。即该计数系统的Mod为4。另一个时钟显示十二个小时,时针旋转一周后回到原来的状态,即该系统的Mod为12。

3、由此,可以得到一个结论。这种周期性变化的计数系统,一个状态加减整数倍的Mod,其状态不会有不会发生变化。00加上4次之后还是00,12点时阵转两圈后还是12点。

三、补码的特性:

1、一个负整数(或原码)与其补数(或补码)相加,和为模。

2、对一个整数的补码再求补码,等于该整数自身。

3、补码的正零与负零表示方法相同。

四、运算速递简介:

1、英文Computing speed;运算速度:运算速度是衡量计算机性能的一项重要指标。通常所说的计算机运算速度(平均运算速度),单字长定点指令平均执行速度MIPS(Million Instructions Per Second)的缩写,每秒处理的百万级的机器语言指令数。

2、这是衡量CPU速度的一个指标。像是一个Intel80386 电脑可以每秒处理3百万到5百万机器语言指令,即我们可以说80386是3到5MIPS的CPU。MIPS只是衡量CPU性能的指标。是指每秒钟所能执行的指令条数,一般用“百万条指令/ 秒”来描述。微机一般采用主频来描述运算速度,主频越高,运算速度就越快。

五、存储系统:

1、计算机的主存储器不能同时满足存取速度快、存储容量大和成本低的要求,在计算机中必须有速度由慢到快、容量由大到小的多级层次存储器,以最优的控制调度算法和合理的成本,构成具有性能可接受的存储系统。

2、存储系统的性能在计算机中的地位日趋重要,主要原因是:

①冯诺伊曼体系结构是建筑在存储程序概念的基础上,访存操作约占中央处理器(CPU)时间的70%左右。

②存储管理与组织的好坏影响到整机效率。

③现代的信息处理,如图像处理、数据库、知识库、语音识别、多媒体等对存储系统的要求很高。

回答3:

负数的补码,是一个正数。

使用补码,就是使用正数,代替负数进行运算。

这也就是:用加法,代替了减法运算。

因此,只用一个加法器,就可以实现加、减运算。节省了硬件。

***补码的原理***

当限定了运算的位数,减去一个数,和加上另一个数,效果相同。

比如: 24-1 = 23

    24 + 99 = (1)  23

只取低两位,忽略进位,这两种运算的结果,不是相同吗?

99,就是-1 的补数。

两位十进制,共有 100 个数字。

求-1 的补数,就是: 99=100 + (-1)

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

计算机,使用二进制,补数就改称:补码。

八位二进制,共有 256 个数字。

-1 的补码,就是 256 + (-1) = 255 = 1111 1111。

-2 的补码,就是 256 + (-2) = 254 = 1111 1110。

。。。

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

求负数八位补码的公式:256+该负数。

 正数无须变换,直接就可以参加运算。

 正数,不需要补码,它也根本就没有补码。

补码,和原码反码,没有任何关系。

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

为什么数据在内存里是以补码的形式存储?

目的是:

用补码代表负数,可以加法器算出减法,省去了减法电路。

回答4:

补码的功能,类似于:

  时针倒拨 3 小时,与正拨 9 小时,效果相同。

利用这种思路,计算机中的负数,也可以改为正数(即补码)。

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

那么,借助于补码,就能统一加减法,够简化计算机的硬件。

十进制比较容易理解:

  25 - 1 = 24

  25 + 99 = (一百) 24。

只要忽略进位,+99 就能代替-1。

+99 就称为-1 的补数。

在这里用了 2 位 10 进制。

求补数的算法:补数 = 负数 + 10^2。

通用的公式是:补数 = 负数 + 10^n。 n 是位数。

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

计算机用二进制,补数,就改名为:补码


一个字节,是 8 位 2 进制。

计数范围是:0000 0000 ~ 1111 1111(十进制 255)。

计数周期是:2^8 = 256。


求补码的算法:负数的补码=负数+2^n。

那么:

-1 的补码=-1 + 256 = 255 = 1111 1111。

-2 的补码=-2 + 256 = 254 = 1111 1110。

。。。


例如,7-2 = 5,用补码计算如下:

      7 = 0000 0111

   [-2] 补 = 1111 1110

 ---相加------------

  得: (1)   0000 0101  = 5

舍弃进位,结果就完全正确。

借助于补码,负数就没有了,从而就把“减法转换为加法运算”。

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

补码的来源,与原码反码毫无关系。

“取反加一、符号位也能参加运算”,这些,都没有什么理论依据。

通过原码反码,已经证明“符号位能参加运算”是错误的。

补码能正确运算,并不是什么“符号位也参加运算”。

因为,补码,它就是一个正数,什么符号位也没有。

补码的全部位,都是代表数据的,当然就都可以参加运算。