为什么数据在内存里是以补码的形式存储?
数据在内存里是以补码的形式存储的原因有三点:
1、保证了0的唯一性,保证了数的表示的准确性。
2、让加减可以统一处理,优化了数的运算过程。
3、解决了自身逻辑意义的完整性。
数据在内存里以补码的形式存储是为了简化计算机的结构设计,同时也提高了运算速度。在计算机系统中,数值一律用补码来表示和存储。
扩展资料:
补码的主要特性:
补码为一个负整数(或原码)与其补数(或补码)相加,和为模。在补码的运算中,对一个整数的补码再求补码,等于该整数自身。补码的正零与负零表示方法相同。计算机底层不区分无符号数和补码数,可认为其运算全部当作无符号数处理。
补码使得符号位能与有效值部分一起参加运算,从而简化运算规则。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。
参考资料来源:百度百科-补码
2024-11-19 广告
数据在内存里以补码的形式存储是为了简化计算机的结构设计,同时也提高了运算速度。
一、补码的释义:
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%左右。
②存储管理与组织的好坏影响到整机效率。
③现代的信息处理,如图像处理、数据库、知识库、语音识别、多媒体等对存储系统的要求很高。
负数的补码,是一个正数。
使用补码,就是使用正数,代替负数进行运算。
这也就是:用加法,代替了减法运算。
因此,只用一个加法器,就可以实现加、减运算。节省了硬件。
***补码的原理***
当限定了运算的位数,减去一个数,和加上另一个数,效果相同。
比如: 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+该负数。
正数无须变换,直接就可以参加运算。
正数,不需要补码,它也根本就没有补码。
补码,和原码反码,没有任何关系。
-------------
为什么数据在内存里是以补码的形式存储?
目的是:
用补码代表负数,可以加法器算出减法,省去了减法电路。
补码的功能,类似于:
时针倒拨 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
舍弃进位,结果就完全正确。
借助于补码,负数就没有了,从而就把“减法转换为加法运算”。
-----------------------
补码的来源,与原码反码毫无关系。
“取反加一、符号位也能参加运算”,这些,都没有什么理论依据。
通过原码反码,已经证明“符号位能参加运算”是错误的。
补码能正确运算,并不是什么“符号位也参加运算”。
因为,补码,它就是一个正数,什么符号位也没有。
补码的全部位,都是代表数据的,当然就都可以参加运算。
广告 您可能关注的内容 |