计算机组成 -- 二进制编码
补码表示法
- 原码表示法
0011
为3,1011
为-3- 缺点:
0000
和1000
都表示为0- 浪费 + 模凌两可
- 由此诞生了补码表示法,其实就是一个简单的翻转而已
- 用补码表示负数,使得整数的相加变得容易,不需要做任何特殊处理,当成普通的二进制相加即可
字符串
- ASCII码类似一个字典,用8位二进制中的128个不同的数字,映射到128个不同的字符里
a
在ASCII里面是第97个,二进制为0110 0001
,对应的十六进制为0x61
- 字符串
9
用0011 1001
来表示,字符串15
用0011 0001
和0011 0101
来表示,占用更多的空间 - 因此存储数据的时候,要采用二进制序列化的形式,
- 而不是简单地把数据通过CSV或者JSON这样的文本格式存储来进行序列化
- 不管是整点数,还是浮点数,采用二进制序列化比存储文本能节省不少空间
- 字符集(Charset)和字符编码(Character Encoding)
- 字符集:字符的集合
- Unicode是字符集,包含150种语言的14万个字符
- 字符编码:对于字符集里的这些字符,怎么用二进制表示出来的一个字典
- Unicode可以用UTF-8、UTF-16、UTF-32来进行编码,存储成二进制
- 某段文本用编码A存储下来,另外一个程序用编码B进行解码和展示,就会出现乱码
- 字符集:字符的集合
参考资料
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.