进制:
进制就是进位计数制,是人为定义的一种计数方法。人类最熟悉的进制应该就是十进制。我相信几乎所有正常人都是非常熟悉十进制的,那么人类为什么最熟悉十进制呢?一种最为可靠的理由是人类有十根手指,十根脚趾。最早的人类是通过掰手指计数的,久而久之,人类天生的容易理解十进制。
什么是十进制呢?简单说就是由0~9十个数字组成的一套逢十进位的计数方法。从这个概念出发,我们可以推导出其他进制的定义。
比如二进制就是由0~1两个数字组成的一套逢二进位的计数方法;八进制就是由0~7两个数字组成的一套逢八进位的计数方法。到了这里,有人就会疑问了,那十六进制呢?0~9十个数字显然不够用啊?
在十六进制中,0~9十个数字确实不够用,于是老外就打开脑洞,借来六个英文字母,分别用a、b、c、d、e、f来表示10、11、12、13、14、15,那么十六进制的定义就可以表述为,由0~f十六个符号组成的一套逢十六进位的计数方法
二进制:
在计算机中,一切数据都是以二进制的方式储存。与人类更亲和的是十进制,那么计算机为什么要使用二进制呢?
进制比较实现简单。计算机的芯片实际上就是由一堆电路组成,电路通常只有两个状态,接通与断开,这两种状态正好可以用“1”和“0”表示,这样在设计芯片的逻辑电路时就会变得非常简单。
适合逻辑运算。二进制只有两个数,正好与数理逻辑中的真和假吻合。
易于转换。二进制与十进制数易于互相转换。
可以看到,与十进制相比,二进制的一个显著特点就是位数很长。由于二进制逢二进一的特点,导致不断向前进位,就使得位数变长。例如,十进制的数字1在二进制中的写法也是1,而十进制的2在二进制的写法中则是10,因为二进制逢二要进位,就如同十进制逢十进位一样,因此第一位向前进一位,自己就变成0,前面一位就变成1,由此变成两位数10。
这里建议大家在学习二进制的时候,千万不要带有十进制的数感,而应当从本质上去理解进制。二进制中的0和1两个数也千万不要把它们看做是数字,要把它们看做两个有顺序的符号,我们把0、1换成0、a两个符号去看二进制是不是更好理解呢?这就好像一个计数游戏,有两个有顺序的符号0、a,每当超过a的时候就必须向前进一位,自己就变成0。Ok,现在假设我们只有两根手指,让我们模仿一下远古人类祖先来记录下今天的采集成果。假设我们采集了一堆野果,现在我们就数一数,在地上画符号来记录一下,就好像我们小时候玩的画正字游戏:
第一颗,我们记作:a
第二颗,擦写一下:a0
第三颗,再擦写一下:aa
第四颗,再擦写,依次向前进位:a00
第五颗,再擦写:a0a
第六颗,再擦写:aa0
……
最后,我们画出来的符号是:a0a0
那么请大家思考一下,我们今天采集了几颗野果呢,也就是说把这个符号换算成十进制是几?如果你能看出结果,那么请相信,你已经从本质上理解了二进制。
计算机中的二进制:
在早期的计算机中,由于硬件的限制,CPU只能处理8位二进制数,例如1971年英特尔推出的8008芯片,这样的CPU就被称为8位芯片。随着硬件的不断发展,先后出现了16位芯片,32位芯片,直到现在的64位芯片,计算机能处理的二进制位数不断增加,CPU运算能力也越来越强。 对于大多数人来说,我认为学习二进制与十进制的数学换算方法是没有意义的事情,现在让我们打开Windows上的计算器去换算,【Window键】 + 【r】打开运行窗口,然后输入calc确定,打开计算器,在计算器【查看】菜单中选择【程序员】即可进入程序员型计算器(Window键是键盘左下角带有一个窗口图标的键)
calc选择二进制,输入8个1,然后选择十进制,即可将一个8位二进制转换为十进制数,可以看到二进制11111111换算成十进制是255,这表明8位CPU只能处理0~255之间的数字。大家可以依次算一算16位、32位以及64位CPU的数据处理能力。
实际上64位二进制换算成十进制是一个非常大的天文数字,计算器也无法换算,这里还是说一说数学公式,二进制转十进制的方法是将每一位二进制上的数字乘以2的n-1次方,然后对所有数求和,n表示的是当前数字在二进制中是第几位。例如二进制数1011转十进制
结果为11。大家依此可以计算出64位1换算成十进制是几。我这里还是给出一个64位二进制数的十进制范围:0~18446744073709551615
最后说明一下,实际在计算机中,二进制的首位是符号位,例如8位二进制,首位表示的是符号位,0表示正数,1表示负数,后面7位才用来表示实际值。例如00000111表示7,10000111表示-7
计算机中的数据存储单位:
说了许多二进制的知识,大家有没有头晕呢?现在让我说一点轻松的,比如硬盘的容量大小是怎么算出来的呢?
我们前面说了,计算机中的一切数据都是二进制,那么硬盘里面存的当然是二进制了。首先要知道,数据最小的容量单位是字节,英文单词是Byte,单位缩写是B,而1B大小对应是一个8位二进制。也就是说二进制11111111存在硬盘中的大小就是1B,换算成十进制,也就是说整数255存到硬盘的大小是1B,一个16位的二进制数储存的大小就是2B咯。
除了最小的字节单位,还有很多其他大小的单位
1KB(Kilobyte,千字节) = 1024B
1MB(Megabyte,兆字节) = 1024KB
1GB(Gigabyte,吉字节) = 1024MB
1TB(Terabyte,太字节) = 1024GB
1PB(Petabyte,拍字节) = 1024TB
我们生活中最常接触的是M、G这两个单位了,实际上它们的完整写法是MB和GB。大家如果有兴趣,也可以算一算1MB可以存多少个32位的二进制整数。
今天的理论知识先学到这里,我想大家应该已经有点明白电脑系统为什么有32位和64位之分了吧,后面的章节,我们会更深入的学习和理解这点,到时候大家就知道两者有什么区别了。
进制附表
网友评论