事实上我们的电脑只认识0与1,记录的数据也是0与1而已,所有电脑常用的数制二进制。但是我们人类常用的数制是十进制。文字方面则有非常的语言,如英文、中文等。那我们电脑是如何记录这些数字或文字那?就得通过一系列的转换才可以。下面我谈一下数制与文字的编码系统。
电脑的基础二进制
数字系统
早期得电脑使用得是利用通电与否得特性制造得电子管,如果通电就是1,没有通电就是0,后来沿用至今,我们称这种只有0和1的环境称为二进制,所谓的十进制就是逢十进一,因此在个位数归零而十位数写成一。所以所谓的二进制,就是逢二进一的意思。
数字系统
那二进制怎么用那?我们先以十进制来解释。如果以十进制来说,3456的意义为:
3456=3*10的3次方+4*10的二次方+5*10的1次方+6*10的0次方
因为任何数值的0次方为1,所以10的)次方是1,同样,将这个原理带进二进制的环境中,我们来解释一下,1101010的数值转换为十进制的话,结果如下:
字节码表
1101010=1*2的6次方+1*2的5次方+0*2的4次方+1*2的3次方+0*2的2次方+1*2的1次方+0*2的0次方
这样你了解二进制的意义了吗?二进制是电脑基础中的基础,了解了二进制后,八进制,十六进制以此例推。那么知道二进制转换成十进制后,那如果有十进制转换成二进制的环境时,该如何计算那?刚刚时乘法,现在是除法就对了。我们同样地使用十进制的106转换成二进制测试一下就好了。
字符编码系统
字符编码系统
既然电脑只有记录0和1而已,甚至记录的数据都是使用字节或位等单位来记录的,那么文字该如何记录那?文件中的内容被读取时,必须要经过一个编码系统的处理才行。所谓的编码系统可以想成时一个字码对照表,它的概念有点像下图所示:
UTF-8编码
当我们要写入文件的字符数据时,该文字数据会由编码对照表将该字符转成数字 后,再存入文件中。同样,当我们要将文件中的数据读出时,也会经过编码对照表转成对应的字符后,再显示到屏幕中。现在你知道为什么浏览器上面如果编码写错时,会出现乱码了吗?这是因为编码对照表写错,导致对应的字符产生误差的原因。
字节码转换
常用的编码表文ASCII系统,因为这个编码系统中,每个符号都会占用一个字节的记录,因此总共会有2的8次方种变化。至于中文当中的编码系统早期使用的时GB2312这个编码表,每个汉字会占用2字节,理论上最多可以有2的16次方也就是65536,最多6多个汉字。
ASCII系统
GB2312的中文编码对于一些数据系统来说时很有问题的,比如一些汉字”许、功“等字,由于这几个字的内部编码会被误判为单双引号,在写入还不成问题,在读写数据的对照表中,常常就会变成乱码。不只是中文,其他非英语也常常会遇到这样的问题。
GB2312中文编码
为了解决这个问题,国际组织ISO/IEC制定了所谓的Unicode编码系统,我们常常称为UTF-8或万国码的这个东西。因为这个编码系统打破了所有不同国家的不同编码,因此目前互联网网站大多以此编码系统为主。
领取专属 10元无门槛券
私享最新 技术干货