程序是怎样跑起来的-读书笔记

cpu

1. cpu是寄存器的合体,当然除了寄存器还有其他的控制器,计算器,时钟,这不讨论,寄存器有多种类型 :【累加寄存器,程序计数器,标志寄存器,基址寄存器,变址寄存器,通用寄存器】等
2. 其中程序计数器控制着下一步执行的指令的地址,分支和循环计数器跟着做调整,标志寄存器存储着计算的结果,如判断两个值大小,则相减看结果和0比较。
3.  函数调用中起作用的call指令和return指令,call指令调用函数的同时把接下来要执行的代码地址存到内存栈中。return指令,从栈中取出地址继续执行。
4.  数组通过基址寄存器和变址寄存器来实现的。
5.  cup处理的工作其实还是很简单的;【数据转送指令,运算指令,跳转指令,call/return 指令】

二进制

1. 原因:和计算机处理信息的机制最相似,cpu用IC 集成电路,IC中的触角只能解析OV 和5V
 2. 二进制基数是2 不同位有不同的位权,从2的0次方开始;
 3. 仅适用于二进制的移位运算,例如a=39 a<<2 先将39转为二进制,再向左移两位,空出来的补位 0,如果向右移,,正数前面全补0 ,负数全补1。   扩充字节数也是一样的道理,例如 8位转16位 10001100----》1111111110001100
4.  补数是 正数取反+1  ,和正数加起来溢出取8位得到0。计算机不做减法,都是加上负数。

小数运算为什么会出错

1. C语言中将0.1加100次得不到10 ,为什么呢?这是因为计算机运算的时候都会转化为二进制执行,0.1对应没有二进制的值,只有无限接近的。
 2. 二进制 ---十进制 0.1= 1*2的-1次方等于二分之一0.5
0.01=2的-2次方          0.25类推后面的是0.125 0.065
 3. 解决:1.允许一定返回的偏差 2.转化位正数运算完,再除以相应的值
 4. 有个浮点数的公式 基数指数 符号什么的

内存

1. 内存中的一个IC
![这里写图片描述](https://img-blog.csdn.net/20170214223123898?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2VsbHlmdW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

2. 内存的逻辑模型是楼房,由一个一个字节堆成的
3. 简单的指针,定义指针时给的类型是为了告诉指针,要取的内存地址多大位一个单元,刚刚的楼房是一层一个单元,数据类型不同了,可能是多层一个单元。
4. 数组是高效使用内存的基础。
5. 栈实和队列都可以通过不指定内存地址和索引来操作数组,区别在于栈属于FILO 队列是FIFO,环形缓冲区是队列的首尾接在一起
6. 链表使元素追加删除更容易,因为下一个元素是由上一个元素里的地址觉定的,加一个,只用改一个地址,其他不用动。不耗费时间
7. 二叉树查找是的数据搜索更有效

内存和磁盘之亲密关系

  1. 程序需要读入内存后才能运行
  2. 磁盘缓存 是在内存中开辟一块地方,放从磁盘中拿到的程序,(频繁调用那部分),可以提高速度
  3. 虚拟内存指的是把 磁盘的一部分拿出来做内存使用,用于内存不够的时候,页文件指的是从把文件划分多个页,内存和虚拟内存交换页来执行
  4. 磁盘的物理结构是由扇区构成的,磁盘的读写是根据扇区的最小单位的整数倍(簇)来进行的,1簇可以使1个扇区512B 或者是1KB等等,所以,建一个文件最少占用512B

压缩

程序在何种环境中运行

源文件到可执行文件

操作系统和应用关系

汇编语言了解程序的实际构成

控制硬件的方法

让计算机思考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值