美文网首页
计算机如何存储数据

计算机如何存储数据

作者: 饥人谷_张乐 | 来源:发表于2017-09-24 12:44 被阅读0次

    编程基础

    1.硬件与软件:计算机的运行原理《编码》

    2.最大的软件:操作系统 维基百科

    3.自己写软件:数据结构&算法《数据结构与算法分析》 掌握排序算法非常必要

    4.多人写软件:软件工程代码大全

    层次结构

    • 操作系统运行于硬件之上

    • 浏览器运行于操作系统之上

    • HTML/CSS/JS运行于浏览器之上

    • HTML/CSS/JS和数据都来自于服务器

    三层依赖关系

    • HTML+CSS+JS依赖浏览器

    • 浏览器依赖操作系统

    • 操作系统依赖硬件

    计算机存储

    计算机是采用二进制存储方式,即只能存储0和1。所以计算机里所有的数据都是一串由0和1组成的二进制信息,那计算机是如何存储0和1呢?如何将各种数据转化成二进制存储的呢?

    第一步:如何存储0和1

    image.png

    如图所示8*8的晶体管方阵 竖向存值 横向输电
    1就充电(显示红色),0就不充电(显示白色)
    晶体管存电少,耗电很快(ms),要多次刷新,就是在没耗尽电量之前进行充电(ns),CPU的赫兹就是每秒刷新多少次,来保证1还是1。

    第二步:存储数字

    其他进制转二进制
    十进制转二进制
    37(10)=3 * 10 ^1 +7* 10^0 =32+4+1=1 * 2^5+1 * 2^2+1 * 2^0=100101(2)
    那么负值怎么存储?第一位作为符号位+0-1,但可能有问题,采用补码来存储
    小数怎么存储?
    0.75(10)=7 * 1/10+5 * 1/10 ^2=0.5+0.25=1 * 1/2+1 * 1/4=0.11(2)
    只有0和1,那小数点怎么表示?采用浮点数存储

    第三步:存储字符

    外国人将每个字符进行了编号0~127共128个ASCII码值
    ASCII美国标准表

    image.png

    如果你想存储 a,那么就储存 97(10) 对应的二进制
    a -> 0110 0001(2) -> 61(16)(为方便书写将二进制转成十六进制)

    如果你想存储字符1,那么就储存 49(10) 对应的二进制
    1 -> 0011 0001(2) -> 31(16)

    第四步:存储中文

    我国制定了常用中文字符集[GB 2312 中国国家标准字符集(https://zh.wikipedia.org/wiki/GB_2312)
    而后微软将一些生僻字日韩字符等加入后推出了GBK字符集

    image.png

    第五步 全球字符 Unicode字符集 4个字节32位存储

    第六步 如何将Unicode存进计算机

    • 低效率方式:
      a -> 00000000 00000000 00000000 01100001(2) = 0061(16)
      你 -> 00000000 00000000 01001111 01100000(2) = 4F60(16)

    • UTF-8高效率方式:
      a -> 01100001
      你-> 11100100 10111101 10100000

    使用UTF-8编码方式(是将Unicode存入计算机的一种算法步骤),UTF-8可以变长存储,根据字节的长短来不定长的存储,以节省空间。

    • 像“a”这种较短的字符(小于七位的),我们可以直接在前面补零表示
    • 像“你”这种长的字符,由于计算机读取时无法弄清楚是存储了一个 由两个一字节组成的字符还是一个由两字节组成的字符,解决方法:

    我们从高位依次划分6个字符进行分组,直到分出的组不足6个。即:0100 111101 100000
    分别在每一组前面补全读取这一串二进制信息的规则,即:1110XXXX 10XXXXXX10XXXXXX
    1110XXXX:111表示计算机需要读取3个字节,每个字节的开头都是10
    10+XXXXXX、10+XXXXXX: 所以后两个字节的开头也补上10,说明是和第一个字节共三个字节一起的,组成一个字符。只有X才是原二进制有效的数据。


    clipboard.png

    ! JS采用Unicode字符集,但没使用UTF-8编码。

    相关文章

      网友评论

          本文标题:计算机如何存储数据

          本文链接:https://www.haomeiwen.com/subject/kvjkextx.html