数据存储
2021-11-07黄伟赵旭
黄伟 赵旭
摘 要:这篇文章主要讲解数据是如何存储在计算机中的,它会分别讲解整数和小数是分别以什么形式存储在计算机中。让读者深刻了解存储机制,揭开疑问。
关键词:整数存储字节;小数存储;浮点数
有很多人都不了解在计算机中到底是如何存储数据的,而我也是很好奇其存储机制,才阅读了很多篇文章,才了解数据是如何存储在计算机中的,而我将用一篇文章简单易懂的总结出数据的存储方式。首先你要知道数据存储分为两个部分,一个是整数的存储,一个是小数的存储,整数存储,只需要考虑正数和负数的存储。而小数的存储在计算机中其实是无法精确表示的,因此小数存储就涉及到了精确度的表示。下面就分别叙述整数存储和小数存储。
一、整数存储
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