ASCII & GBK & Unicode & UTF-8

1.为什么学习编程基础


因为你首先是程序员,其次才是前端,如果希望在这条路上走得远,编程基础是一定要学习的。
一个程序员需要知道

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

    image.png
  2. 最大的软件:操作系统(操作系统
  3. 自己写软件:数据结构 & 算法(《数据结构与算法分析》),大概需要半年的时间才能读完,快速学习需要学习排序算法
    image.png
  4. 多人写软件:软件工程(《代码大全》)
    image.png

2.前端为什么要学习编程基础


  • 操作系统运行与硬件之上
  • 浏览器运行于操作系统之上
  • HTML/CSS/JS运行于浏览器之上
  • HTML/CSS/JS和数据都来自于服务器

防止变成井底之蛙


image.png

3.计算机:二进制世界


1110 0100 1011 1101 1010 0000 1110 0101 1010 0101 1011 1101
上面一行数据就是“你好”在计算机里的表示方式

第一步:(内存)如何存储0和1?

  • 内存一般边上有几个卡槽,中间一般是有四到八个方块,每个方块里面有很多个0和1的机关,一个机关可以想象成很多个原点,一个原点就是一个电池;


    image.png
  • 电池一般是8个一排,如图红色代表是存满电,白色代表没电。
  • 现选中竖向的一列,即竖向为一列输电,横向的8条管道再对这选中的一列8个点进行输送电量。当为1的时候则充电,当为0的时候则是不充电。然后再进行第二排充电
  • 电池存在一个耗电的过程,日常的电池持久有点的原因是因为其转化为化学能,但是在这边是不行的,因为太小了,使用晶体管做的,里面不能再塞其余东西了,所以耗电也是很快的。充电一般是几纳秒(10的-9次方)就可以充满,冲完之后一般是几毫秒就耗完了,所以如果说断电后,系统就得黑掉,运行在内存中的操作系统就没有了。
  • 为了解决上面这个耗电问题,计算机就要刷新,红点就是1,在电耗完之前就要重新充电,一般CPU有一个参数叫多少HZ( 赫兹),这个的意思就是每秒钟能充多少次电

第二步:如何存储数字

image.png

十进制的数字怎么转换成二进制

  1. 正整数
    37(十进制) = 1 * 2^5 + 0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 100101(二进制)
  2. 负整数:计算机只能存0和1,负号是不能存的,为了完美的存储负数,使用一套叫补码(使用0和1存储符号)的规则
    -37(十进制) = -100101(二进制)
  3. 小数:小数将以浮点数的形式存储,将以十分之一为底的数字转换成以二分之一为底的数字,即可转为二进制
    0.75(十进制) = 0.11(二进制)
    0.75 = 7 * 1/10 + 5 * 1/100 = n1 * 1/2 + n2 * 1/4 + ... = 0.5 + 0.25 = 1 * 1/2 + 1 * 1/4 = 0.11(二进制)
    但是又会有一个问题,计算机只能存储0和1,这个小数点怎么存?
    这就需要使用浮点数规则

第三步:如何存储字符

将所有字符进行编号呢?
ASCII码是美国人发明的,共编号128个字符

image.png

  1. 通常我们为了书写方便,会将二进制转为十六进制,所谓转成十六进制,就是将二进制四位放一起转成数值。
    十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或af)表示,其中:AF表示10~15,这些称作十六进制数字。
    a(字符) -> 0110 0001(二进制)-> 61(十六进制)
    1(字符1) -> 0011 0001(二进制) -> 31(十六进制)

第四步:如何存储中文

国标2312


image.png

微软整的GBK字符集(国标扩展字符集)

第五步:如何存储所有字符

有一个组织叫Unicode联盟,Unicode的意思就是统一编码

image.png

问题:2^16为65536,已经明显不能满足128237个的存储量了,该怎么办?
由原来的216转为232(4294967296)位

第六步:如何将Unicode存储到计算机里面

image.png
  1. 比如存储a,以前ASCII的时候只要使用8位就存储结束了,你这个汉字,只要使用16位就存储结束了,现在明显浪费了很多内存,即所有中文翻2倍,英文翻4倍
  2. UTF-8将想着将多余的空间省略,但是这样是不行的,因为计算机没法分辨到底存的是几位字符,并且没法判断哪几个是一起的,哪几个是单独的
  3. 对于16位的,如下图所示,我们将16进制分成三部分,第一部分保留原16进制的1-6位,第二部分保留原16进制的7-12位,剩下的13-16位放到第三部分,每一部分前面都留出东西在


    image.png
  4. 第三部分前面四位为1110,三个1一个0,表示计算机读的时候要往后读三个字节,并且后面每个字节的开头都是10,也就是第一部分和第二部分前面10的标识代表我是跟着最前面这个字节的,除了第一部分前两个,第二部分前两个,第三部分前四个之外的,才是真正存储的字符
  5. 对于a -> 01100001,最前面一个1都没有,所以其是一个单字节,双字节前面一定是两个1,三字节前面一定是三个1

UTF-8是Unicode存到计算机上面的一种算法,是一种编码方式,不是字符集

image.png

  1. 当只需要7位存储的话,直接在七位前面加个0就可以存储了
  2. 如果是8-11位,则是以第二种方式存,这种形式开头一定是110,即两个字节,后面字节以10开头
  3. 如果是12-16位,则以第三种方式存,这种形式开头一定是1110,即三个字节,后面两个字节以10开头

即有几个字节就以几个1加一个0开头,然后后面的字节肯定是以10开头的,汉字一般是两个字节或者三个字节,UTF-8是为了解决Unicode费空间的问题

现实问题

image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容