计算机存储整数

采用定点表示法,也就是假设小数点在最右边,但是并不存储。

一、无符号表示法

1.范围:0 ~ 2n-1(n位存储空间)
2.步骤:
(1)将整数变为二进制数
(2)如果二进制数不够n位,那就在左边加0凑足n位;如果超过n位则溢出
3.溢出:
例:有4位内存,最多存储到15,如果我们想再加5,得到结果是20,20=(10100)2,丢掉溢出位1,只剩(0100)2=4,所以溢出后得到的结果是4
4.应用:
(1)计数:计数是不需要负数的
(2)寻址:存储单元地址都是从0到整个存储器的总字节数
(3)排序:为文本、图像、音频、视频类数据类型排序


二、符号加绝对值法

1.范围:-2n-1+1 ~ -0, +0 ~ 2n-1-1(n位存储空间)
2.步骤:
(1)将整数绝对值变为二进制数
(2)最左位填上符号,0表示正数,1表示负数
3.溢出:
溢出分两种:正溢和负溢
在这里插入图片描述
正数溢出和无符号数是相同的情况,值得一提的是负数溢出。
例:如果在-5的基础上减去7,在轮盘上你会看到回到了+6。
如果我们用-5-7的做法,即(1101)2-(0111)2=(0110)2=+6,是正确的;
而如果用-5+(-7)的做法,即(1101)2+(1111)2=(1100)2=-4,是错误的;但是如果我们直接写-12,会发现-12=(1100)2=-4,也是错误的。
出现这两种错误情况的原因其实是相同的:这种符号加绝对值的表示方式正负数并不对称,也就是说-m+m其实不等于0,所以我们不能用加上-m来替换减去+m,-12的计算其实是犯了-(5+7)的错误。
4.应用:
这种方法不会用来存储整数,只会用来存储部分实数。


三、二进制补码表示法

1.范围:-2n-1 ~ 2n-1-1(n位存储空间)
2.一些基本概念:
原码:就是符号加绝对值
反码:正数的反码就是原码,负数的反码是符号位不变,其他位取反
补码:正数的补码就是原码,负数的补码有两种计算方式,一是反码+1,二是原码从右往左找第一个1,1的右边(包含1)不变,1的左边全部取反(不包括符号位)
也就是说正数原码=反码=补码、负数补码=反码+1
注意:二进制补码表示法只有一个0,也就是(0000)2,-0统一表示成2n-1,也就是(1000)2= -8
例:
在这里插入图片描述

3.存储步骤:
如何以补码存储整数
(1)将整数变为带符号二进制数
(2)如果是正数或0,保持不变;如果是负数,取其补码存储
4.还原步骤:
如何从补码还原整数
(1)如果是正数或0,保持不变;如果是负数,取其补码
(2)将该整数化为十进制或其他进制
5.溢出
在这里插入图片描述
二进制补码的溢出也分正溢和负溢,正溢和上面两种都相同,因为正数不用变码,所以可以用直接相加的结果转换为二进制然后去掉溢出位。负溢的话不能用相减的十进制数直接转,因为负数需要变码,正确的计算溢出结果应该是转换成二进制,然后用二进制相减,比如-3-7=(1101)2-(0111)2=(0110)2=+6,当然这时候你可以使用-3+(-7)=(1101)2+(1001)2=(0110)2=+6的做法,因为这是一个正负对称的表达方式。
6.应用
二进制补码是计算机用于存储整数的标准表示法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章