数据存储的问题

Posted binaryant

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据存储的问题相关的知识,希望对你有一定的参考价值。

数据存储在哪里?

  答:数据存储在存储器中

那么什么是存储器?

  好嘛,我也不解释不清楚。但是我知道用什么能存储数据

  1. 纸张(想象一下打孔纸带,以前的指令和数据都码在上面)
  2. 内存(现在存储介质为晶体管(早期还有其他手段《水银延迟线存储器》))
  3. 寄存器(存储介质为晶体管)
  4. 硬盘
  5. 缓存部件

存储器容量的问题?(这里指内存、寄存器)

  能存储下多少的数据,这个就需要量化了。例如你从A跑到B点。你告诉别人我跑了那么长,那么长?懵逼
  存储器是由晶体管组成,一个晶体管表示2种状态,那么一组晶体管就可以表示多种状态。技术图片

  那么能存储2种状态的一个晶体管,称为bit。类似的还有B、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。

  然后由大佬来制定存储单位的换算关系。不好理解?(10毫米=1厘米,100厘米=1米,这些都是人规定的,当大家都认可的时候这就是标准啦)

  1 Byte(B) = 8 bit(早期1Byte=18bit)
  1 Kilo Byte(KB) = 1024B
  .......还有很多,自行搜索。

  存储器的存储单位划分比较大方,最小单位是字节Byte,然后对每一个存储单元编号

技术图片每一个小格子就是一个bit

根据大佬定义,1 Byte(B) = 8 bit技术图片,希望大家能理解

还有三点需要考虑

  1. 编码
  2. 数据在存储器的排列情况
  3. 数据范围

存储:数字10

  1. 对数字10进行XXX编码
  2. 不存在排列的问题,1字节可表达256种状态,10<256
  3. 存储器最小存储单位是字节,所以数字10占用1个字节

存储:字符a

  1. 计算机能存储的是二种状态(电信号、0或1、高低电平),不管怎么理解,都是二种状态,采用多个晶体管组合用来表达更大范围状态。所以这里的问题是,字符a不能直接存储,需要对字符进行编码。存储编码后的值。(例如你看见红灯知道要停下来了,看见绿灯可以行走了,这里就是对走和停的编码。)
  2. 同上
  3. 同上

存储:300.232323

  1. 编码
  2. 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解码
排列
  大小端

 

  

 

 

  

以上是关于数据存储的问题的主要内容,如果未能解决你的问题,请参考以下文章

java 本地数据存储问题

ElasticSearch数据存储内容

在安装SAP B1时候出现找不到存储过程的问题

第三章 大数据存储

数据存储模拟器查询/问题

PG数据库存储过程包含存储过程报语法错误,麻烦大神看看是啥问题?