为了账号安全,请及时绑定邮箱和手机立即绑定

计算机是如何存储数据的

标签:
Html/CSS

前端为什么要学编程基础?

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

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

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

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

存在三层依赖,所以我们前端需要学习编程基础,我们才会知道

  • CSS/JS是怎样运行的?

  • JS的变量存储在哪里?

  • 数据怎么从服务器获取?

计算机: 二进制的世界

  1. 如何存储0和1

  2. 如何存储数字

  3. 如何存储字符

  4. 如何存储中文

  5. 如何存储所有字符

  6. 如何用更少的空间来存储

1.内存如何存储0和1*

计算机首先纵向,从上往下选中8个点,然后横向输入电量

webp

内存如何存储0和1.png

存储

  • 1就充电(变成红色)

  • 0就不充电(不变色)

读取

  • 电量大于50% 就是1

  • 电量小于50% 就是0

通过这样内存就实现可以存储0和1

2. 如何存储数字*

计算机只存储0和1,所以存储数字,需要将数字转换为二进制的0和1

十进制 --> 二进制

37(10) == 100101(2) 括号里面的数字代表是什么进制

*代表是乘,^代表是多少次方,?代表未知,需要求出来

37(10)  = 3 * 10^1 + 7 * 10^0
        = n1 * 2^? + n2 * 2^?
        = 32 + 4 + 1
        = 1 * 2^5 + 1 * 2^2 + 1 * 2^0
        = 1 * 2^5 + 0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0
        = 100101(2)

-37(10) == -100101(2)

负数会以补码的形式存储,比较复杂,这里不做多讲

0.75(10) == 0.11(2)

0.75(10)  = 7 * 1/10 + 5 * 1/10^2
          = n1 * 1/2 + n2 * 1/4
          = 0.5 + 0.25
          = 1* 1/2 + 1 * 1/4
          = 0.11(2)

小Tips:

为了方便书写,一般会将二进制写为十六进制

二进制 --> 十六进制,每四个二进制代表一个十六进制数

举个例子下面的转换可以跟这个例子推出来:

1111(2) --> F(16)

1111(2) = 2^3 + 2^2 + 2^1 + 2^0 = F(16)
二进制十六进制
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

3.如何存储字符*

将每个字符编号

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)

美国信息交换标准代码是基于拉丁字母的一套计算机编码系统。它主要用于显示现代英语,而其扩展版本EASCII则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646

你想存储a,就需要存储97(10)对应的二进制

97(10)  = 9 * 10^1 + 7 * 10^0
        = n1 * 2^? + n2 * 2^?
        = 64 + 32 + 1
        = 1 * 2^6 + 1 * 2^5 + 1 * 2^0
        = 01100001(2) == 61(16)

你想存储A,就需要存储65(10)对应的二进制

65(10)  = 6 * 10^1 + 5 * 10^0
        = n1 * 2^? + n2 * 2^?
        = 64 + 1
        = 1 * 2^6  + 1 * 2^0
        = 01000001(2) == 41(16)

通过上面的例子说明计算机会认为A和a是不一样,因为所对应的ASCII不同

4. 如何存储中文

5.如何存储所有字符

  • Unicode 字符集

  • unciode万国码,将全球字符编号,包括中日韩文字、藏文、盲文、楔形文字、 颜文字:-)、 绘文字

6. 如何将Unicode存到计算机里

低性价比

a -> 00000000 00000000 00000000 011000012 = 0061(16)

你 -> 00000000 00000000 01001111 011000002 = 4F60(16)

高性价比 UTF-8

a -> 01100001

你-> 11100100 10111101 10100000

低性价比,因为计算机需要使用4个字节来存储

下面解释一下"你"的UTF-8

//Unicode你 -> 00000000 00000000 01001111 011000002//utf-8你-> 11100100 10111101 10100000//1110 表示告诉计算机,读取的时候往后读三个字节,每个字节开头都是10,除我之外,10都是表示我跟着前面的

UTF-8 是一种编码方式,不是字符集

UTF-8的编码方式

现实问题

  • 为什么有些中文软件喜欢用GBK,不用Unicode?

    • 因为在93年-99年都在使用GB 13000,GBK这两种

  • Javascript使用Unicode字符集,但是没有使用UTF-8编码



作者:饥人谷_区家乐
链接:https://www.jianshu.com/p/7a09175fa87f


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消