阅读目录:
01:课前扯淡
一切没有技术含量的工作终将被淘汰。
02:计算机发展史
一、什么是计算机?
计算机 (computer) 俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑运算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
相关解释:
程序自动化:可以将预先编好的程序组纳入计算机内存,在程序控制下,计算机可以连续、自动地工作,不需要人的干预。
高速:当今计算机的运算速度已达到每秒万亿次,普通电脑也可达每秒亿次以上,使大量复杂的科学计算问题得意解决。
二、计算机发展史
大型主机阶段 --> 小型计算机阶段 --> 微型计算机阶段 --> 客户机/服务器(c/s阶段) --> Internet阶段 --> 云计算时代
详细见链接:--> 传送门在此 <--
03:计算机系统
一、冯•诺依曼计算机
1、1944-1945年间,冯诺依曼提出“存储程序”的计算机设计思想,并进行了实践,现代计算机多数属于冯诺依曼计算机体系。
2、冯诺依曼计算机的基本思想:
• 运算和储存分离
• 存储程序:指令和数据不加区别混合存储在同一个存储器中,可以按地址寻访,连续自动执行
• 五大部件构成:运算器、控制器、存储器、输入设备、输出设备
• 指令和数据用二进制表示,指令由操作码和地址码组成
• 以运算器为中心,控制器负责解释指令,运算器负责执行指令,顺序执行程序的每一条指令
3、(1)以运算器为中心的冯诺依曼计算机构成图:
这种结构,以运算器为中心,控制器控制着输入、输出设备、运算器、存储器。
当进行输入输出的时候运算器就要停止工作,不能进行计算;计算的时候不能进行存储,存储的时候不能进行计算。
(2)以存储器为中心的现代计算机构成图
以存储器为中心,存储器有很多个存储单元,一部分存储单元进行输入输出的时候,另外一部分存储单元可以进行运算,这样就实现了输入输出、存储、运算并行地工作。
二、计算机的构成
1、计算机硬件(Hardware)是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。
计算机软件(Software)是指计算机系统中的程序及其文档。
硬件系统主要由五大部分组成:运算器、控制器、存储器、输入设备、输出设备
• 运算器:负责算术运算与逻辑运算
• 控制器:负责发送和接受命令
• 存储器:用来存储计算机中的数据,一般可分为内存和外存。内存储器又叫主存储器,分为读写存储器RAM、只读存储器ROM两大类
• 输入设备:用来进行输入的设备,如键盘、扫描仪等
• 输出设备:用来进行输出的设备,如显示器、音响等
其他硬件:
• CPU:中央处理单元,又称中央处理器。CPU由控制器、运算器和寄存器组成,通常集中在一块芯片上,是计算机系统的核心设备。计算机以CPU为中心,输入和输出设备与存储器之间的数据传输和处理都通过CPU来控制执行。
• 主板:主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键和面板控制开关接口、指示灯插接件、扩充插槽、主板、直流电源供电插接件等元件
软件分为系统软件和应用软件。 • 系统软件:系统软件是指控制和协调计算机及其外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。 系统软件举栗:windows xp 、windows 7 、android 、IOS 、unix 、linux 等 • 应用软件举栗:暴风影音、QQ 等
2、硬件、软件、用户的关系
硬件是基础,硬件需要通过系统软件控制来启动硬件,并让各个硬件之间相互协同工作,在系统软件的基础上是用户,用户操纵的是系统软件,并在系统软件的基础上安装相应的应用软件,来完成用户所需要完成的工作。
所以从最底层往上依次是硬件 --> 系统软件 --> 应用软件 --> 用户
3、现代计算机的基本部件
CPU、主存储器(内存)、I/O设备、总线成为现代计算机的四大核心部件。
现代计算机里面,一个微处理器(芯片)可能包含多个CPU,即多核。
三、计算机工作原理
1、简单理解:
数据和程序在硬盘中存放着(二进制形式),读到内存中(内存中有一部分是专门运行操作系统的),CPU根据指令从内存中取出数据进行加工,然后再按地址把结果送到内存中去,通过输出设备输出。
硬盘与内存之间有速度差,内存中有一部分缓存区,用来缓解硬盘与内存之间的速度差。
CPU与内存之间有速度差,寄存器会暂存一些数据来缓解CPU与内存之间的速度差。
2、深入理解:-->传送门在此<--
计算机的工作过程,就是执行程序的过程。根据冯诺依曼的设计,计算机应能自动执行程序,而执行程序又归结为逐条执行指令。执行一条指令又可以分为一下4个基本步骤:
(1)取出指令:从存储器某个地址中取出要执行的指令送到CPU内部的寄存器暂存。
(2)分析指令:把保存在寄存器中的指令送到指令译码器,译出该指令对应的微操作。
(3)执行指令:根据指令译码,向各个部件发送相应控制信号,完成指令规定的各种操作。
(4)为执行下一条指令作好准备,即取出下一条指令地址。
04:进制转换
1、二进制与十进制转换
以二进制数10101101为例: 从右往左依次 1 * 2**0 = 1 0 * 2**1 = 0 1 * 2**2 = 4 1 * 2**3 = 8 0 * 2**4 = 0 1 * 2**5 = 32 0 * 2**6 = 0 1 * 2**7 = 128 相加:1+4+8+32+128=173
以十进制数173为例: 除二取余法: 173 / 2 = 86 余 1 86 / 2 = 43 余 0 43 / 2 = 21 余 1 21 / 2 = 10 余 1 10 / 2 = 5 余 0 5 / 2 = 2 余 1 2 / 2 = 1 余 0 1 / 2 =0 余 1 从下往上组装:10101101
2、八进制
以八进制数10为例: 1 * 8**(2-1) = 8 0 * 8**(1-1) = 0 然后相加:8+0=8 所以对应十进制数为8
以二进制数11101010.010110100为例: 把二进制数从右往左分为三个一组: 11 101 010 . 010 110 100 然后再一组一组以二进制转换为八进制: 3 5 2 . 2 6 4 所以,对应八进制数为 352.264
3、十六进制
以十六进制数A6为例: A * 16**(2-1) = 160 6 * 16**(1-1) = 6 然后相加:160+6=166
以十六进制数4AF8B为例: 每个数分开: 4 A F 8 B 分开的每个数,以十进制转化成四位二进制: 0100 1010 1111 1000 1011 组合起来:1001010111110001011
以二进制数111010110为例: 在最左边补上0,直到可以整分为四个一组,然后分为四个一组: 0001 1101 0110 转换成十进制:1 13 6 用十六进制表示就是 1 D 6 所以,对应的十六进制数就是 1D6
所有的转换成十进制的方法都一样,先乘再加;所有的转换成二进制的方法也一样,先分组再转换。
知道了数制之间的转换也就理解了数值之间时怎么运算的,那我们在计算机中到底时怎么把输入电脑的100+100进行运算的呢?这就要理解原码、反码及补码。
4、二进制的四则运算
乘法和除法也都和十进制差不多。
5、计算机中采用二进制的主要原因
(1)技术实现简单。计算机是由逻辑电路组成,逻辑电路通常只有两个状态:开关的接通与断开,这两种状态正好可以用“1”和“0”表示。
(2)简化运算规则。两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机计算机内部结构,提高运算速度。
(3)适合逻辑运算。逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相符合。
(4)易于进制转换,二进制与十进制易于相互转换。
(5)用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度干扰时,仍能可靠地分辨出它是高还是低。
05:原码、反码、补码
一、机器数与真值
1、机器数
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机中用一个数的最高位存放符号,正数为0,负数为1。
比如,十进制中的数 +3,计算机字节长为8位,转换成二进制就是00000011。如果是 -3,就是10000011。
那么,这里的00000011 和 10000011 就是机器数。
2、真值
因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数10000011,其最高位1代表负,其真正的数值是 -3 而不是形式值 131(10000011转换成二进制是131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。
栗:0000 0001 的真值为 +000 0001 对应的数是 +1
1000 0001 的真值为 - 000 0001 对应的数是 -1
二、原码、反码、补码
因为计算机辨别“符号位”显然会让计算机的基础电路变得十分复杂,于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则,减去一个正数等于加上一个负数,所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。于是人们为了将符号位参与运算,并且只保留加法,从而简化计算机运算,于是发明了原码、反码和补码。
原码、反码、补码都是有符号的用二进制表示数的方法,均由 符号位 和 数值位 构成。
原码是符号位加上真值的绝对值,即用第一位表示符号位,其余位表示值。 比如如果是8位二进制: [+1]原 = 0000 0001 [-1]原 = 1000 0001 第一位是符号位,余下7位是数值位。因为第一位是符号位,所以8位二进制数的取值范围就是[1111 1111 , 0111 1111] 即 [-127 , 127] 原码是人脑最容易理解和计算的表示方式
反码表示的方法是: 正数的反码是其本身 负数的反码是在其原码的基础上,符号位不变,其余各个位取反 [+1] = [00000001]原 = [00000001]反 [-1] = [10000001]原 = [11111110]反 可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值,通常要将其转化成原码再计算。
补码的表示方法是: 正数的补码就是其本身 负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1 (即在反码的基础上+1) [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 如果反码的最后一位是1,那最后+1的时候注意遵循逢2进1 对于负数,补码表示方式也是人脑无法直观看出其数值的,通常也需要转换成原码再计算其数值。
在计算机系统中,数值一律用补码来表示(存储)。
因为:使用补码,可以将符号位和其他位统一处理,同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。补码与原码的转换过程几乎是相同的。
神奇的栗子: [00000001]补 + [11111111]补 ,其实加完之后是 [100000000] ,进的一位要舍弃,所以相加结果是[00000000] , 正好符合数学运算 [+1] + [-1] = [0]
了解了数值之间的运算和计算机的处理过程,那么对文字、图像、视频计算机又是如何处理的呢?还有数据是怎么传输的?请继续学习编码与IOS七层模型。