计算机编程语言是一套什么系统?
编写某种计算机语言表示出这个计算过程的行为就是编写程序
程序:
1+2 就是一个计算过程
+1 +2 +3 就是计算过程的序列
位的概念
二进制 十进制
计算机存储数字都是以补码的形式存储的,
好处是方便计算,只用一条电路就可以实现正数和负数的计算
有符号数(首位为0代表正数 首位为1代表负数) 无符号数
正数的原码、反码和补码相同
负数的补码是其反码加1,因此可以通过反码得到补码
原码 7 – 0111 -7 – 1000 0111
反码 正数的原码和反码相同 负数的反码 符号位不变 其余取反 -7 1111 1000
补码 正数的补码和原码相同 负数的补码是反码加1 -7 1111 1001
计算机是怎么实现计算的?
计算机由很多部件组成,能够正确的组织一起运行指令,告诉计算机按照我们的意愿进行计算。
机器指令:01100101010b CPU部件,中央处理器来执行计算,这一串二进制数字转化为高低电频驱动计算机运行
机器指令的逻辑含义:16进制数字表示某种编号信息
使用汇编指令来表示机器指令,适应人类的逻辑思维
编译器:把一套语言编译成另外一套语言
汇编语言:
汇编指令存在哪里?
内存(内存储器) memory
内存编号:段地址:偏移地址,从0开始的。内存地址为什么从0开始?
通过电路来表示内存地址, 高低电平
计算机中使用 0 1 表示高低电平
能表示的地址范围 000…00——111…11
同一串16进制的机器码 产生两种解释,既可以是数据又可以是指令
那么CPU怎么区分?CPU怎么读取内存指令?
cpu和内存条通过主板上的电路通信,这个电路至少包含三种信息:1、内存编号信息 (地址线) 2、数据信息 (数据线) 3、读或写(控制信息 控制线)
内存的最小单元是字节 Byte 1B=8bit
计量单位
换算关系
1KB = 1024B =1024*8 b
1MB = 1024 KB
1GB = 1024 MB
寻址能力:寻找内存地址的能力
假设只有一根地址线,就是只有两种状态 0/1 无法表示三个地址
地址线的数量决定了能够表示的地址范围及地址数量
n个地址线 可以表示 2^n 个地址数量
写入的数据是写到内存条中了吗?不是,写到显卡上的显存上
cpu是如何看待插在主板上的物理设备的?
把这些物理设备都看成一段连续的内存地址,每个物理设备都占有一段内存地址
主板上 显卡上 网卡上 有ROM内存
硬盘(外存储器 u盘、光盘等):允许CPU读取和写入数据,断电后内存中的指令和数据不会丢失
0 1表示成了磁极
输入设备:鼠标 键盘 麦克风 等等
输出设备:音响 显示器 等等
端口地址 CPU通过端口来获取数据的,端口中也有存储数据的地方
芯片 CPU也是一块芯片,都有存储数据的地方,鼠标和键盘都有芯片存储数据
键盘按下A 首先是存储到键盘的内存,然后通过连到主板的线发送给端口,然后CPU通过主板上的三根线来读写控制数据
#include <stdio,h>
int main(){
printf("hello world");
return 0;
}
系统硬件组成
加载:从主存复制一个字节/字到寄存器,覆盖之前的内容
存储:从寄存器复制一个字节/字到主存的某个位置,覆盖之前的内容
操作/计算:把2个寄存器的内容复制到ALU(算数/逻辑单元)进行计算,将结果存放到一个寄存器中
跳转:把指令寄存器的值覆盖要跳转的内存地址
深入了解参考 计算机组成原理 艾伦