- 数字与字符串
- 都是一为什么分
1和'1' - 功能不同,数字是数字,字符串是字符串,要严谨
- 数字能加减乘除,字符串不行
- 字符串能表示电话号码,数字不行(数字不能以0开头,有的电话号码由字母组成)
- 存储形式不同
JS中数字是用64未浮点数的形式存储的JS中,字符串是用类似UTF-8形式存储(UCS-2)
- 如何存数字
- 十进制转成二进制
- 10转2:31变二进制
-
所以31(10) = 01111(2)
-
2转10:100011变成十进制
-
每一位乘以2的N次方,然后加起来即可
-
十六进制与二进制
-
记住8421对应xxxx
-
HEX表示16进制,BIN表示2进制
-
OCT表示8进制,DEC表示10进制
-
中国国家标准局,名称为「国标2312」,首份字符编码
-
用0000~ffff表示汉字
-
一个16进制是4个0/1位
-
ffff就是 4*4=16 位,也就是两个字符
-
最多可收录 2^16=65536 个字符
-
但只收录了6000多汉字、西文字母和日文假名,没收录繁体字,生僻字,韩文等
-
「你」的GB2312编号为C4E3
-
「牛」的GB2312编号为C5A3
-
微软推出了一个国标扩展,简称GBK(国标扩)
-
含21886个汉字和图形符号,收录了中日韩使用的几乎所有汉字,完全兼容GB2312,依然使用16位(两字节)
-
后来国标局推出GB18030取代GBK,GB18030不兼容GB2312
-
网页里有藏文、泰文,仍然显示不了
-
万国码Unicode
-
优点:
-
已收录了13万字符(大于16位),全世界通用
-
以后还会继续扩充,不会停止
-
最新版只添加了一个字----令和的合体字
-
缺点:
-
两个字节不够用,每个字符要用三个及以上字节
-
这样所有文件都扩大50%,不划算
-
UTF-8:
-
存储「a」
a对应的Unicode编号为97,十六进制为61 Unicode直接存:00000000 00000000 01100001 UTF-8偷懒存法:01100001 三字节变一字节,比GBK还省
- UTF-8中的8的意思是:最少可用8位存一个字符