计算机编码
冯诺依曼理论的要点:计算机的数制采用二进制,计算机应该按照程序顺序执行。
一个数在计算机中的二进制表示形式叫做这个数的机器数,机器数是带符号的,在计算机中用一个数的最高位存放符号,正数为0,负数为1。因为第一位为符号位,所以机器数的形式值不等于真正的数制,为区别起见,将带符号位的机器数对应的真正数值成为机器数的真值,例如10000011的真值为-3,00000011的真值为3。在计算机系统中,数值一律用补码来存储。
原码、反码、补码
原码:符号位加上真值的绝对值,即第一位表示符号,其余位表示值
反码:正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其他位取反
补码:正数的补码是其本身,负数的补码是在其原码的基础上,符号位不变,其他位取反再加1,即在反码基础上加1
3=[00000011]原=[00000011]反=[00000011]补
-3=[10000011]原=[11111100]反=[11111101]补
字符编码:一个字符如何对应一个特定数字的标准
计算机存储文件:二进制
计算机显示文件:字符串
存储,二进制-----------→解码decode-------------→显示,字符串
显示,字符串-----------→编码encode--------------→存储,二进制
最早的字符编码为ASCII,只规定了英文字母、数字和一些特定字符与数字的对应关系,每个字符最多只能用8位(1个字节)来表示,所以ASCII最多只能表示28=256个符号。后来各国定义了自己的编码规则,中国规定了的gb2312编码,用两个字节表示一个汉字,日本规定了shift_JIS编码,韩国规定了Euc-kr编码等。
ascii:使用8位二进制数表示一个字符
unicode:使用至少16位二进制数表示一个字符,
utf8:使用尽可能少的二进制数表示一个字符,一个汉字占3个字节
gbk:一个汉字占2个字节