数据存储的问题
Posted binaryant
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据存储的问题相关的知识,希望对你有一定的参考价值。
数据存储在哪里?
答:数据存储在存储器中
那么什么是存储器?
好嘛,我也不解释不清楚。但是我知道用什么能存储数据
- 纸张(想象一下打孔纸带,以前的指令和数据都码在上面)
- 内存(现在存储介质为晶体管(早期还有其他手段《水银延迟线存储器》))
- 寄存器(存储介质为晶体管)
- 硬盘
- 缓存部件
存储器容量的问题?(这里指内存、寄存器)
能存储下多少的数据,这个就需要量化了。例如你从A跑到B点。你告诉别人我跑了那么长,那么长?懵逼
存储器是由晶体管组成,一个晶体管表示2种状态,那么一组晶体管就可以表示多种状态。
那么能存储2种状态的一个晶体管,称为bit。类似的还有B、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。
然后由大佬来制定存储单位的换算关系。不好理解?(10毫米=1厘米,100厘米=1米,这些都是人规定的,当大家都认可的时候这就是标准啦)
存储器的存储单位划分比较大方,最小单位是字节Byte,然后对每一个存储单元编号
每一个小格子就是一个bit
根据大佬定义,1 Byte(B) = 8 bit,希望大家能理解
还有三点需要考虑
- 编码
- 数据在存储器的排列情况
- 数据范围
存储:数字10
- 对数字10进行XXX编码
- 不存在排列的问题,1字节可表达256种状态,10<256
- 存储器最小存储单位是字节,所以数字10占用1个字节
存储:字符a
- 计算机能存储的是二种状态(电信号、0或1、高低电平),不管怎么理解,都是二种状态,采用多个晶体管组合用来表达更大范围状态。所以这里的问题是,字符a不能直接存储,需要对字符进行编码。存储编码后的值。(例如你看见红灯知道要停下来了,看见绿灯可以行走了,这里就是对走和停的编码。)
- 同上
- 同上
存储:300.232323
- 编码
- 300肯定不用用1个字节存储,原因就是1字节只能表达256,300>256。那么需要2个存储单元(2个字节)那么存在排列的问题了。到底是 30 00 还是 00 30? 这个就是大小端的问题了。 如果是小端模式,数字的地位在 低地址,高位数据在高地址,假设存储地址从低高到排列那么应该是 00 30。大端相反
3.占用2个字节
总结:
编码(编码的方式不是唯一的,各种各样。)
整数:补码
小数:float遵从的是IEEE R32.24 ,而double 遵从的是R64.53。
字符:
字母:ASCII
汉字:GBK、GBK2312
术语:
乱码:利用你对整数使用了补码进行编码,在解码的时候采用了ASCII,这个现象就是乱码啦
你使用GBK对汉字编码,而缺采用UNICODE解码
排列
大小端
以上是关于数据存储的问题的主要内容,如果未能解决你的问题,请参考以下文章