课程概要
人与人沟通需要使用到语言,人与计算机沟通也需要一种语言进行,你要跟计算机进行沟通,必须要使用计算机可以识别的语言,这种语言我们称之为机器语言,也就是0和1,二进制。
但对于人来说机器语言(二进制)比较难懂,所以前人就在这个基础上衍生出了「汇编语言」,相比于机器语言,汇编语言更加通俗易懂一些,但汇编语言终究不是机器语言,想要计算机读懂汇编语言,就需要「编译器」来将汇编语言转为机器语言。
时代是在进步的,技术也是。伟大的前辈在基于「汇编语言」的基础上,又发明了一类语言,我们称之为「高级语言」,例如C语言,其特点就是更加贴近人类的思维、表达方式,但与「汇编语言」一样的是:「高级语言」也需要编译器将其转为计算机能读懂的机器语言。所以综上所述,不是语言变得强大了,而是编译器变得越来越强大。
学习「汇编语言」只是为了更好的去理解「高级语言」在计算机底层做了什么事情,更好的去理解计算机底层内容与「高级语言」的特性。
进制
前面,我们有提到计算机只可以读懂机器语言,那机器语言本身就是二进制,所以为了更好的了解、学习计算机,我们要深刻的去理解什么是进制。
如果你总是以十进制为基础去考虑其他进制,包括在进制运算时,也是先考虑转为十进制再运算,这说明你不理解进制的本质,想要真正的理解进制,就要忘掉我们生活中常用的十进制,也要忘掉进制间的转换。
进制的定义:N进制,由N个符号组成,逢N进1。那么问题来了,十进制是由十个符号组成,就一定是0、1、2、3、4、5、6、7、8、9么?其实并不是,我们既然说了是由符号组成,那么十进制也可以是由A、Y、B、3、4、5、D、9、0、X组成,由什么符号,取决于定义的那个人,我定义的十进制前20个表格是这样的:
A |
Y |
B |
3 |
4 |
5 |
D |
9 |
0 |
X |
YA |
YY |
YB |
Y3 |
Y4 |
Y5 |
YD |
Y9 |
Y0 |
YX |
提问:1+1=3成立吗?
进制运算
基本了解进制后,我们需要了解进制间是如何运算的,八进制的10+4=?10-4=?10*4=?10/4=?首先,我们需要知道八进制的八个符号分别是什么,分别是:0、1、2、3、4、5、6、7。
那么如何计算呢?1. 写出八进制的前50 2. 借助算术表
八进制的前50表:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
60 |
61 |
加法的本质实际上就是查表,10+4,就是从10这个数字开始依次往后查4位,那么其结果就是14。那么10-4就是依次向前查4位,10*4就等于10+10+10+10,那么是否等于从10这个数字开始依次往后查3个10位呢?其实并不是,因为这里是八进制,我们要严格按照八进制的表示来,这里的10(一零)实际上表示8个,也就是从10这个数字开始依次往后查3个8位,10*4的结果也就是40。
借助写表格的方式去查表计算,这并不高效,那么回想一下我们从学习数学开始是怎么学习计算的呢?相信你已经回忆起来了,我们是借助加减乘除这四张算术表去计算的,那么在这里我们可以尝试写一下八进制的加法算术表:
1+1 = 2 |
||||||
1+2 = 3 |
2+2 = 4 |
|||||
1+3 = 4 |
2+3 = 5 |
3+3 = 6 |
||||
1+4 = 5 |
2+4 = 6 |
3+4 = 7 |
4+4 = 10 |
|||
1+5 = 6 |
2+5 = 7 |
3+5 = 10 |
4+5 = 11 |
5+5 = 12 |
||
1+6 = 7 |
2+6 = 10 |
3+6 = 11 |
4+6 = 12 |
5+6 = 13 |
6+6 = 14 |
|
1+7 = 10 |
2+7 = 11 |
3+7 = 12 |
4+7 = 13 |
5+7 = 14 |
6+7 = 15 |
7+7 = 16 |
这样再去计算八进制的算术题,就简单多了,其他进制运算以此类推。
二进制简写形式
在之前的课程概要中,我们说了计算机只能读懂机器语言(二进制),相信很多人就开始疑惑了,为什么计算机只能读懂二进制?原因是因为计算机是需要电的,而电路设计只有两种状态:1(真·通电)0(假·未通电),所以计算机中存储的任何文件、接收的任何指令都是由0和1组成的。
在这里,我们可以借助UltraEdit软件打开一个EXE文件:
打开一看,为什么这里没有显示二进制0和1呢?是因为二进制使用、阅读都比较麻烦,所以如上图所示,展示出来的是十六进制,这里我们也可以称之为二进制的简写方式。
在计算机中二进制和十六进制的对应关系如下:
二进制 |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
十六进制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 </ |