补码表示法

  1. 原码表示法
    • 0011为3,1011为-3
    • 缺点:00001000都表示为0
      • 浪费 + 模凌两可
  2. 由此诞生了补码表示法,其实就是一个简单的翻转而已
    • 用补码表示负数,使得整数的相加变得容易,不需要做任何特殊处理,当成普通的二进制相加即可

字符串

  1. ASCII码类似一个字典,用8位二进制中的128个不同的数字,映射到128个不同的字符里
    • a在ASCII里面是第97个,二进制为0110 0001,对应的十六进制为0x61
    • 字符串90011 1001来表示,字符串150011 00010011 0101来表示,占用更多的空间
    • 因此存储数据的时候,要采用二进制序列化的形式,
      • 而不是简单地把数据通过CSV或者JSON这样的文本格式存储来进行序列化
      • 不管是整点数,还是浮点数,采用二进制序列化存储文本能节省不少空间
  2. 字符集(Charset)和字符编码(Character Encoding)
    • 字符集:字符的集合
      • Unicode是字符集,包含150种语言的14万个字符
    • 字符编码:对于字符集里的这些字符,怎么用二进制表示出来的一个字典
      • Unicode可以用UTF-8、UTF-16、UTF-32来进行编码,存储成二进制
      • 某段文本用编码A存储下来,另外一个程序用编码B进行解码和展示,就会出现乱码

参考资料

深入浅出计算机组成原理