数据存储

2021-11-07 00:56黄伟赵旭
客联 2021年9期

黄伟 赵旭

摘 要:这篇文章主要讲解数据是如何存储在计算机中的,它会分别讲解整数和小数是分别以什么形式存储在计算机中。让读者深刻了解存储机制,揭开疑问。

关键词:整数存储字节;小数存储;浮点数

有很多人都不了解在计算机中到底是如何存储数据的,而我也是很好奇其存储机制,才阅读了很多篇文章,才了解数据是如何存储在计算机中的,而我将用一篇文章简单易懂的总结出数据的存储方式。首先你要知道数据存储分为两个部分,一个是整数的存储,一个是小数的存储,整数存储,只需要考虑正数和负数的存储。而小数的存储在计算机中其实是无法精确表示的,因此小数存储就涉及到了精确度的表示。下面就分别叙述整数存储和小数存储。

一、整数存储

1.1字节:

因为计算机只能存储二进制即0或者1,而1位则是代表一个数,在计算机中一个字节包含8位即1个byte类型,1位则叫1 bit 。因此一个字节包含有2^8即256个数。

1.11存储负数

1.因为计算机只存储二进制不能表示负数,而一个字节有256位数所以根据钟表原理来存储负数,即256个数正数存储1-127负数存储-1到-128 还有0 因此一共有256个数正好对称。

2.计算机表示用最高位来表示符号位即0表示正数,1表示负数。

3.计算机用补码来表示数,正数的补码为其本身,而负数的补码则是原码取反加1

负数补码例如:-1 的原码1000 0001  反码1111 1110  补码为1111 1111

例如:-127 原碼1111 1111  反码 1000 0000 补码1000 0001

所以127的表示则是为0111 1111 而当其加1时为1000 0000此时其值为-128 加1 为1000 0001即为-127

二、小数存储

在小数存储方式中有两种存储方式,一种是定点数,一种是浮点数,这篇文章着重将浮点数。

2.1浮点数

浮点数的由来

因为定点数还是无法准确的表示小数,因此推出浮点数,浮点数也无法准确的推出小数,但很接近。浮点数是根据IEEE-754标准来存储的,如下有几点规范

1. 浮点数包含3部分:符号位,指数和尾数,尾数又可称之为有效数

2. 浮点数用二进制表示,因此尾数也是用二进制表示

3. 指数可正可负,因此根据IEEE-754标准规定float转出来的值-127,即所为的漂移值:127,double的漂移值是1023

4. float是用4个字节进行表示的称之为单精度,其表示的第一位是符号位,之后的8位是指数 再之后的23位是尾数

5. double使用8个字节来表示的称之为双精度,其表示的第一位是符号位,之后的11位是指数,在之后的52位则是尾数

浮点数表示

18.625

18用二进制表示为10010

0.625用二进制为0.101

所以18.625为10010.101

用浮点数来存储18.625为1.0010101*2^4因为符号位一定为1所以省略所以尾数为001 0101

因为指数转出来之后需要-127因此这里需要+127 即131这里用8位表示256个正数,用二进制表示1000 0011

所以浮点数是0 1000 0011 (指数)001 0101 0000 0000 0000 0000(尾数) 其就是18.625

反推:其数0为正数 指数131-127为4 尾数 为1.0010101

1+1`*`2^-3+1`*`2^-5+2^-7=1+0.125+0.03125+0.0078125=1.1640625`*`2^4=18.625

为什么计算机中不能存储准确的小数却能够输出精确的小数?

因为在 java 中其小数表示形式为3f333333而当计算时才会用到浮点数

参考文献:

[1]王移芝,罗四维.大学计算机基础教程.北京:高等教育出版社,2004

[2]杨振山,龚沛曾.大学计算机基础(第四版).北京:高等教育出版社,2004

[3]冯博琴,大学计算机基础.北京:高等教育出版社,2004

[4]李秀等,计算机文化基础(第5版).北京:清华大学出版社,2005

[5] June jamrich Parsons Dan Oja.计算机文化.北京:机械工业出版社,2001

[6]山东省教育厅组编.计算机文化基础.东营:中国石油大学出版社,2006