第三章:了解二进制,了解计算机底层才能学好编程

更新于:2016-12-27 20:10:31

我们都知道一台电脑(计算机)可以做好多事情,可以看电影、听歌、玩游戏、看小说、写东西……各种软件做各种事情。


电脑硬盘里是有各种各样的文件,有视频文件.avi,有音乐文件.mp3,有文本文件.txt……它们有大小,我们也可以对这些文件内容进行修改,比如用记事本修改文本文件,用视频编辑软件修改视频文件。


先单说一个文本文件:


1.png


上图楠神用editplus打开了一个文本文件,里面写有“hello world”,这就是这个文件的内容,我们人眼可以直接识别,也可以修改。其实计算机并不知道什么是“hello world”,“hello world”这是我们人类的语言。计算机它有自己的语言,就是由1和0组成的二进制数字。“hello world”对于计算机来说也只是一串数字,是editplus这个软件利用一种文件指定的编码把这串数字翻译过来了。


知道什么是二进制数字吗?我们人类生活中采用的算术是十进制的,有0、1、2、3、4、5、6、7、8、9组成,逢十进一。二进制就是有0、1组成的,逢二进一。


比如10000 十进制来看这个数是一万,从二进制角度来看只相当于十进制下的16 

二进制转十进制 1*2^4+0*2^3+0*2^2+0*2^1+0*2^0=16


当前的计算机系统使用的基本上是二进制系统,计算机只能识别和处理由‘0’.‘1’符号串组成的代码。


比如十进制的10000转换成二进制,就变成10011100010000,是不是我们阅读起来很困难,所以二进制只有计算机去读、去计算,我们在使用计算机时是不会直接显示或使用二进制数字。计算机里常用的数字显示是我们人类最熟悉的十进制,还有八进制、十六进制。为什么会有八进制和十六进制,没有七进制、十五进制或者其他位数进制呢?8是2 的3次方,16是2 的4次方,八进制一位对应二进制三位,十六进制的一位对应二进制四位,这一点使得三种进制之间可以非常直接地互相转换。八进制或十六进制缩短了二进制数,方便人类阅读,也保持了二进制数的表达特点。数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。


在PHP中是以数字0开始表明该数字是八进制的,16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。前面我们在学习HTML、CSS时颜色值就是用十六进制表示的,比如红色#ff0000。


关于进制的相互转换后面再讲。


1.png


用editplus十六进制方式查看上面的文本文件,看到了吧“hello world”是一串十六进制数字,但真正存在硬盘里的是二进制数字。


了解了上面,我们应该知道一点,电脑里所有的文件、所有数据追根究底都是二进制数字,文本文件、视频文件、音乐文件……电脑能正常打开文本文件供我们去阅读、打开视频文件音乐文件正常播放,全是靠“编码”这东西去转换的,把二进制码转换成人类能理解的视图、音律、动画等。下节重点讲解编码。


我们知道了文件、数据在计算机里存在的形式,那它的大小是怎么得来的?


位:这是一个二进制 1000 0000(中间空格为了方便阅读),共八位(bit,又名“比特”,简写为b) 八位等于一个字节(Byte,简写为B),"位(bit)"是计算机中最小的数据单位。

8bit = 1Byte


字节:8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字(编码为ANSI时),换句话说,1个汉字占据2个字节的存储空间。

1KB(千字节)=1024B

1MB(兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;

1GB(吉字节,十亿字节,又称“千兆”)=1024MB= 2^30 B;

1TB(万亿字节,太字节)=1024GB= 2^40 B;

1PB(千万亿字节,拍字节)=1024TB= 2^50 B;

1EB(百亿亿字节,艾字节)=1024PB= 2^60 B;

1ZB(十万亿亿字节,泽字节)= 1024EB= 2^70 B;

1YB(一亿亿亿字节,尧字节)= 1024ZB= 2^80 B;

1BB(一千亿亿亿字节)= 1024YB= 2^90 B;

1NB(一百万亿亿亿字节) = 1024 BB = 2^100 B;

1DB(十亿亿亿亿字节) = 1024 NB = 2^110 B;


字节是我们常用的文件大小衡量单位,比如下面是一个文件的属性描述,它的大小就是用字节表示的。


1.png


从迅雷里看到一个文件的下载速度也是每秒钟是多少字节。


扩充知识:我们生活中所说的“我家装多少M宽带”,其实这个M不是字节的M,是位的M。譬如:10M就是10兆宽带,也就是10Mbps (bits per second)。意思理想状态下,10M宽带最高下载速度是1.25MB/s。