当前位置:首页 » 存储配置 » 补码存储

补码存储

发布时间: 2022-08-13 02:08:58

‘壹’ 计算机为什么采用补码的形式存储数据

主要为了便于运算,不管是正负数的补码,都可以不加任何判断,直接用同个加法器运算。

‘贰’ 计算机中的负数为什么用补码存储

计算机中的负数是为了方便运算,所以计算机才会采用补码存储数据。补码是计算机方便加法运算的编码。例如100(10进制)100/16=6余46/16=0余6。所以100的16进制数是64H以8位二进制来说64H=01100100B正数的补码和原码相同。
所以100的补码还是01100100。
另假设还有个数是-109109的16进制,是01101101-109的原码,就是11101101(首位是符号位)-109的反码,就是10010010(除了符号位其他各位分别取反)。109的补码就是10010011(反码加1)。现在运算100-109=100+(-109)。01100100+10010011=11110111这个结果就是-9的补码。如果换成其他编码运算就不会这么简单了。
例如原码相加的话存在符号位进位的问题等等。对于计算机而言。数值的计算补码是最方便的。

‘叁’ 既然计算机内部数据是以补码存储的,为什么还要有原码呢原码和反码存在的意义是什么 初学者请教大家

正负数据,只是使用补码来存放。
计算机中,并没有原码和反码。

正负数,和补码之间,有个关系式,可以直接互相转换,并不需要绕道原码反码。
原码和反码,可以说,一无是处。

‘肆’ 计算机为什么使用补码来存储数据

补码的功能,类似于:

时针倒拨 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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

(5)补码存储扩展阅读:

补码的主要特性:

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

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

参考资料来源:网络-补码

‘陆’ 为什么负数要以补码形式存储

补码的功能类似于:时针倒拨 3 小时,与正拨 9 小时,效果相同。

那么,计算机中的负数,也可以改为正数(即补码)。

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

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

十进制比较容易理解:

25 - 1 = 24

25 + 99 = (一百) 24。

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

+99 就称为-1 的补数。

在这里用了 2 位 10 进制。

求补数的算法:补数 = 负数 + 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

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

借助于补码,计算机中,就不存在负数了,从而就把减法转换为加法运算。

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

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

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

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

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

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

‘柒’ 补码二进制计算机为什么要用补码存储整型,关于

借助于补码,就可以用加法,代替减法运算。
所以,计算机使用补码存储数据,就是为了简化硬件。

‘捌’ 类型的存储与最大数最小数,为什么负数补码存储

无论什么类型的十进制数字,在计算机中,都是以二进制存储。

下面按照八位二进制来说明,其它位数,自行脑补。

十进制数 0,存放的,就是二进制 0000 0000。

十进制数 +1,就加上 1,二进制是 0000 0001。

十进制数 +2,就再加 1,二进制是 0000 0010。

。。。

十进制数 +127,加 1加 1...,就加到了 0111 1111。

+127,这就是最大数。

----------

负数怎么办?你就从 0,依次递减吧。

十进制数 0,以二进制 0000 0000 存放。

十进制数 -1,就减去 1,得 1111 1111 = 255(十进制)。

十进制数 -2,就再减 1,得 1111 1110 = 254。

十进制数 -3,就再减 1,得 1111 1101 = 253。

。。。

十进制数 -128,减 1减 1...,得 1000 0000 = 128。

不要再减了,这就是最小值了。

(你再继续减,就是 0111 1111,这就是+127 了。)

因此,最小数就是-128。

----------

总结:

零和正数:直接用二进制存放。

负数:存放形式是【256+这个负数】。

这套存放格式,就是所谓的【补码】。

求【补码】,就是这么简单。

完全不用绕到“原码反码符号位”那么远。

可以用十进制来计算。如果需要二进制,你就再转换一下。

用这个方法,不涉及原码反码符号位,就少了不少麻烦事。

----------

为什么负数用补码存储?

利用补码,可以把减法运算,转换成加法。

(所以,在计算机中,有一个加法器,就够用了。)

例如:6-2 = 4,用补码运算如下:

6 的补码是 0000 0110

+-2 的补码是 1111 1110

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

(1)0000 0100 (= 4 的补码)

(括号中的 1,是进位,舍弃不要了。)

注意:

如果运算结果超出了-128~+127 的范围,结果将是错的。

这种现象称为“溢出”。

再注意一下:进位,并不等于溢出。

---------

因为补码的这个特性,所以,在计算机中,只是使用补码存放数据。

原码反码,在计算机中,都是不存在的。

原码反码 的用途,仅仅是用于“心算、笔算”。

其实,笔算的方法,并非只有“取反加一”。

另外,-128,有补码,但是却没有原码反码!

用“取反加一”来求-128 的补码,无异于缘木求鱼。

所以,大家,完全不必在原码反码 上浪费时间精力。

但是,考试怎么办?

呃 ...,还是别跟老师较劲,他怎么讲,你就怎么答吧。

‘玖’ 关于汇编里数据(补码)的存储问题!

用汇编语言编程,-10,或
246,都是编译
F6H,再存储到计算机。
计算机,不管它是
-10,还是
246,它就是《存着》而已。
这个数字,就等着你来编写指令来处理。
你使用了无符号的数据处理方法,计算机就拿它当做
246。
你使用了有符号的数据处理方法,计算机就拿它当做
-10。

‘拾’ 计算机为什么用补码存储数据

补码的功能,类似于:

时针倒拨 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

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

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

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

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

“原码反码取反加一、符号位也能参加运算”...

这些,都没有什么理论依据。

从“取反加一”来学习补码,就弄不清楚“为什么用补码”。

热点内容
sqlserver表格 发布:2024-05-06 07:09:54 浏览:611
雪铁龙凡尔赛选哪个配置 发布:2024-05-06 06:56:04 浏览:570
福睿斯配置怎么样 发布:2024-05-06 06:50:16 浏览:102
微生物数据库 发布:2024-05-06 06:47:33 浏览:604
原神和steam游戏哪个需要配置 发布:2024-05-06 06:37:40 浏览:665
nginx访问403 发布:2024-05-06 05:56:39 浏览:677
android上传图片参数 发布:2024-05-06 05:56:04 浏览:221
360控制上传流量 发布:2024-05-06 05:38:11 浏览:999
几代算法 发布:2024-05-06 05:33:43 浏览:353
安卓怎么查看iculd照片 发布:2024-05-06 05:18:24 浏览:91