1.CPU和内存是由许多晶体管组成的电子部件,简称IC
--物理上,这二者都有许多触角
2.CPU从功能上分为4个部分:寄存器、控制器、运算器、时钟
--见名知意
3.程序启动后,根据时钟信号,控制器从内存中读取指令和数据。通过对这些指令加以解释和运行,
运算器就会对数据进行运算,控制器根据该运算结果来控制计算机。
--计算过程中,可以将数据暂存至寄存器,谁还不是个宝宝
4.CPU是具有各种功能的寄存器的集合体,分为8种,分别是累加寄存器、标志寄存器、程序计数器、指令寄存器、栈寄存器、
基址寄存器、变址寄存器、通用寄存器
--前5种只有一个
5.程序的流程分为顺序执行、条件执行、循环执行三种
--和Java代码一样
6.机器指令主要是:数据转送指令、运算指令、跳转指令、call/return指令
--一看还真不多
7.IC有许多引脚,每个引脚只有两个状态,有电没电,与二进制完美符合。
--就是你了
8.一个引脚是一位,8位为一个字节
9.移位运算:将二进制的各位数值进行左右移位的运算。分为左移(<<)和右移(>>),左移运算时,空出的低位,用0补充。右移运算时,空出的高位,用符号位的数值补充
--符号位就是左一,如0000 0001,符号位是0;1000 0001,符号位是1
10.二进制的最高位(左一)为符号位,0表示正数或者0,1表示负数。
11.8位二进制的1是0000 0001,那么-1是1000 0001?
不是的,因为1+(-1)=0,但是0000 0001 + 1000 0001 = 1000 0010,明显不是0
这是因为计算机做二进制的减法运算时,实际上用的是加法运算。
12.表示负数时,需要用“二进制的补数”,补数:用正数表示负数
--绕进去了没
13.补数求法:各位数的数值全部取反,然后加1
-1,也就是要用1的补数代替
1:0000 0001
取反:1111 1110
加1后:1111 1111
所以-1的8位二进制是1111 1111
1+(-1)就是
0000 0001
+
1111 1111
=
1 0000 0000
溢出的高位舍去,变成了0000 0000
14.二进制的值取反加1,再与二进制的原值相加,结果为0
15.计算3-5
3-5
就是
3+(-5)
3为 0000 0011
-5为5的补数
5为 0000 0101
取反:1111 1010
加1: 1111 1011
-5即为 1111 1011
0000 0011
+
1111 1011
=
1111 1110
那么结果值1111 1110 它的最高位是1,表示负数。那么它到底是多少呢?
可以先看下它的补数
原数:1111 1110
取反:0000 0001
加1:0000 0010
0000 0010换算为10进制的话,就是2
那么1111 1110按照 原数+补数=0 的原则,换算为就是-2
所以3-5=-2
16.逻辑右移,高位补的是0,算术右移,高位补的是符号位的数值
17.逻辑运算,0为false,1为true