整理了一些我对进制之间转换的理解,有些地方为了记忆方便可能不太准确,欢迎指正。
我们日常最常用的进制当然是十进制DEC,因为最符合人类的习惯(数手指)。
对于计算机而言,最熟悉的则是二进制BIN(高低电平表示1
和0
)。
此外常用的还有八进制OCT,十六进制HEX。
写在前面
以最常见的十进制为例,我们对于数字的记录方式是通过数位+基数(0~9),比如152可以看成是1*10²+5*10¹+2*10º,数位从低到高为个位、十位、百位…
这种方式对应到其他进制只是数位和基数都不相同,其组成数字的法则是一样的。
比如二进制从低位到高位可以看做是个位、二位、四位、八位….
e.g. 152的二进制表示是10011000,就可以看做是$12^7+12^4+1*2^3$
一般而言,不同进制之间转换的时候都会以BIN作为桥梁。
不同进制之间转换
因为OCT和HEX都是BIN的倍数,所以一般转换时都是分位转换,即OCT的一位数相当于BIN的三位,HEX的一位数相当于BIN的四位。
常听见的几种编码
ASCII标准码:最高位奇偶校验位,后七位进行存储,可存128个字符。
Unicode:因为计算机的普及,中文、日文以及其它文字使得更多的字符需要被编码,为了统一标准,因此Unicode诞生了,用两个字节来表示一个字符。
UTF-8:因为字母只需要一个字节,而汉字需要两个字节,这样在使用Unicode表示字母的时候就导致内存空间被浪费,因此再Unicode的基础上又诞生了更通用的UTF-8,他的特点是对不同范围的字符使用不同长度的编码。