数据存储

存储整数

1.无符号表示法:

    用于存储正整数与0,假定计算机用于存储无符号整数的最大存储位为n位,存储范围是0到2^n-1。如果存储的值突破了最大值,则会出现溢出的情况,假定这段位空间首尾相连(概念上的相连,只是为了方便理解,其实不相连),溢出会的数据会到空间首部从新存储,多出的位计算机会丢掉最左边的位。

    无符号表示法可以提高存储效率,因为不必存储整数的符号,这就意味这所有分配的存储单元都可以存储,只要不用到负数。

2.符号加绝对值表示法

    用于主要用于存储实数,用于存储整数并不常见,该方法会把0到2^n-1个有效范围分成两份,左边存储正数,右边存储负数,与常规思维相反,该表示系统上有两个0,分别是正0(0000)和负0(1000),符号加绝对值每存储一个整数,需要用一个二进制位表示正负(0表示整数,1表示负数),这就意味这在8位的存储单元中,只能有7位可以表示数字的绝对值(不带符号),因此在n位单元可存储的数字范围是-(2^n^-1-1)至+(2^n^-1-1)。

    n位单元中的最左位用于存储表示正负的符号。

3.补码表示法

    几乎所有计算机都用这种方法存储有符号整数,该存储方法在符号加绝对值的基础上,是左边存储负数,右边存储正数,做了反码运算,反码就是把0变成1,把1变成0。两次反码运算可以还原整数。还有一中运算被称之补码运算,补码运算从最右边复制位,直到有一被复制,接着反转其余的位(被复制的那个1不变),同样,两次补码也都可以还原整数。

    在计算机中,用补码表示法存储数据,计算机按照以下步骤:

        存储:将整数转化为n位的二进制数,如果该数字是整数或者0,原样存储,如果是负数,计算机用补码方式存储。

        还原:如果最左位是1,进行补码运算,如果最左位是0,不进行任何操作。

存储实数

定点表示法:

    表示实数,但是小数点是固定的,(这种表示法,小数点是假定的,并不存在)小数点左边是整数,右边是小数,该方法可以存储整数!如果整数太大,可以往右边挪位置,能够更有效地利用内存。定点表示法假定小数点右边有2两个数码,那么4.123的3就无法存储,精度会受损。带有很大整数部分或很小的小数部分不应该用定点表示法存储!

1.浮点表示法

     该方法允许小数点浮动,可以在小数点左右有不同的数码,这种方法极大的曾加了可存储的实数范围,在该方法中,一个数字有3部分组成:符号,位移量,定点数,类似于科学计数法:

实际数字:+ 651000000000000000    -91600000000000

科学计数法:+ 6.51*10^17                   -9.16*10^-13

符号就是表示正负数,位移量17,定点数6.51。【51是尾数,用无符号存储,加上符号的话就是符号加绝对值存储,但是记住它不是整数】

这种方法好处显然易见,更短,更省空间!C语言也可以用“6.51E17”来保存变量。

为了统一,该方法有了规范化表示:小数点左边使用非0数码。

2.余码系统

   余码系统和二进制补码系统的区别就是符号位相反。

3.IEEE标准

    单精度:采用32位来存储浮点表示法的实数,符号位占用1,指数位占用8位(偏移量128=2^8-1),尾数使用23位存储,加起来一共1+8+23=32位。

    双精度:采用64位存储来存储,符号位占用1位,指数位占用11位(偏移量1023=2^11-1),尾数使用52位存储,1+11+52=64位。

S是符号位 E是偏移量位 M是尾数.

2
评论与订阅

avatar
100
2 评论主题
0 主题回复
0 追随者
 
回应最多的评论
最热门的评论主题
1 评论作者
谷奇峰 最近的评论作者
  订阅  
提醒
谷奇峰
游客
谷奇峰

你好厉害,我自愧不如,以后跟你混了。

谷奇峰
游客
谷奇峰

I want you photograph.