补课

来源:互联网 发布:怎么创建app软件 编辑:程序博客网 时间:2024/05/17 07:23
学习c语言的一些中遇到的薄弱知识点:

      1.计算机方面的知识:

           不管是台式机还是笔记本,它们内部都有一块电路板,上面密密麻麻地布满了大小不一的电子器件,包括CPU、内存条、网卡、各种插槽和接口等,这就是“主板”,如下图所示。

这张图片主要让读者了解主板的构造,你不必理解图片中各个晦涩的名词。

图1:计算机主板

CPU

CPU (Central Processing Unit) 就是“中央处理器”,是计算机的大脑,负责计算、思考、处理数据、控制其他设备等,没有CPU,计算机就无从谈起,CPU的速度直接决定了电脑的运行速度。如下图所示:

图2:CPU

目前市场上常见的应用于台式机和笔记本的CPU有 Intel(英特尔)AMD(超微半导体公司),Intel 性能好一点,占据了大部分份额。
关于CPU的位数,我们将在《C语言和内存》中的《虚拟地址空间以及编译模式》一节讲解。
CPU有很多针脚,直接插在主板上,如下图所示:

图3:CPU插槽

内存

内存就是下面的长方形“卡片”,也叫内存条

图4:内存条

我们常说电脑有几个G的内存,就是指它的大小,市面上常见的有2G、4G、8G等。
C语言程序必须加载到内存才能运行,CPU 也被设计为只能从内存中读取数据和指令,一名不了解内存的程序员,注定无法彻底理解程序的运行原理,不能让自己的编程水平有一个质的飞越,因此我们特地增加了《C语言和内存》专题,让大家彻底明白内存,并运用到实际编程中。
内存条插在主板上的特定插槽内,如下所示是台式机的内存插槽:

图5:台式机内存插槽

不过笔记本为了节省空间,一般将内存条平放,如下所示:

图6:笔记本内存插槽

主板上一般有多个内存插槽,可以插多个内存条,电脑内存大小是所有内存条大小之和。内存条也被称为主存

硬盘

硬盘是用来保存数据的。打开一个文件,编辑完成后,Ctrl+S 就保存到了硬盘,断电不会丢失。硬盘分为机械硬盘(HDD)固态硬盘(SSD)

机械硬盘就像VCD或DVD,由一个精密电机带动光盘快速转动来让探头读取和写入数据。如下图所示:

图7:机械硬盘

固态硬盘就像手机内存卡或U盘,内部有上亿个电子元器件,非常细小,达到纳米级别,通过电路来读取和写入数据。如下图所示:

图8:固态硬盘

与机械硬盘相比,固态硬盘在读写速度上有很大优势,一个很明显的例子就是电脑安装了固态硬盘开机速度很快,很少出现卡顿的现象。

硬盘不是直接插在主板上,而是通过导线与主板相连,所以叫外部存储,也是电脑外设的一部分,不过不像鼠标、键盘、U盘等,没有也可以正常工作,硬盘是电脑正常运行所必需的外部设备。

协调

CPU、内存、硬盘等部件不能各自为战,它们通过主板连接在一起,由CPU控制,协调工作。

2.程序与内存:

       如果你的电脑上安装了QQ,你希望和好友聊天,会双击QQ图标,打开QQ软件,输入账号和密码,然后登录就可以了。

那么,QQ是怎么运行起来的呢?

首先,有一点你要明确,你安装的QQ软件是保存在硬盘中的。

双击QQ图标,操作系统就会知道你要运行这个软件,它会在硬盘中找到你安装的QQ软件,将数据(安装的软件本质上就是很多数据的集合)复制到内存。对!就是复制到内存!QQ不是在硬盘中运行的,而是在内存中运行的。

为什么呢?因为内存的读写速度比硬盘快很多。

对于读写速度,内存 > 固态硬盘 > 机械硬盘。机械硬盘是靠电机带动盘片转动来读写数据的,而内存条通过电路来读写数据,电机的转速肯定没有电的传输速度(几乎是光速)快。虽然固态硬盘也是通过电路来读写数据,但是因为与内存的控制方式不一样,速度也不及内存。

所以,不管是运行QQ还是编辑Word文档,都是先将硬盘上的数据复制到内存,才能让CPU来处理,这个过程就叫作载入内存(Load into Memory)。完成这个过程需要一个特殊的程序(软件),这个程序就叫做加载器(Loader)

CPU直接与内存打交道,它会读取内存中的数据进行处理,并将结果保存到内存。如果需要保存到硬盘,才会将内存中的数据复制到硬盘。

例如,打开Word文档,输入一些文字,虽然我们看到的不一样了,但是硬盘中的文档没有改变,新增的文字暂时保存到了内存,Ctrl+S才会保存到硬盘。因为内存断电后会丢失数据,所以如果你编辑完Word文档忘记保存就关机了,那么你将永远无法找回这些内容。

虚拟内存

如果我们运行的程序较多,占用的空间就会超过内存(内存条)容量。例如计算机的内存容量为2G,却运行着10个程序,这10个程序共占用3G的空间,也就意味着需要从硬盘复制 3G 的数据到内存,这显然是不可能的。

操作系统(Operating System,简称 OS)为我们解决了这个问题:当程序运行需要的空间大于内存容量时,会将内存中暂时不用的数据再写回硬盘;需要这些数据时再从硬盘中读取,并将另外一部分不用的数据写入硬盘。这样,硬盘中就会有一部分空间用来存放内存中暂时不用的数据。这一部分空间就叫做虚拟内存(Virtual Memory)

3G - 2G = 1G,上面的情况需要在硬盘上分配 1G 的虚拟内存。

硬盘的读写速度比内存慢很多,反复交换数据会消耗很多时间,所以如果你的内存太小,会严重影响计算机的运行速度,甚至会出现”卡死“现象,即使CPU强劲,也不会有大的改观。如果经济条件允许,建议将内存升级为 4G,在 win7、win8 下运行软件就会比较流畅了。

关于内存的更多知识,大家在学习完《C语言入门教程》后,请继续阅读《C语言和内存》,我敢保证你将会顿悟。

总结:CPU直接从内存中读取数据,处理完成后将结果再写入内存。

图1:CPU、内存、硬盘和主板的关系

3.八进制与十进制

除了二进制,编程中也经常使用八进制和十六进制。

八进制有0~7共8个数字,基数为8,逢八进一,借一当八;十六进制中,用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有0~F共16个数字,基数为16,逢16进1,借1当16。例如:

  • 八进制 3072 = 3×83 + 0×82 + 7×81 + 2×80 = 1536 + 0 + 56 + 2 = 1594
  • 十六进制 E3F9 = 14×163 + 3×162 + 15×161 + 9×160 = 57344 + 768 + 240 + 9 = 58361

二进制、八进制、十进制、十六进制的对应关系十进制二进制八进制十六进制十进制二进制八进制十六进制000010101012A111111101113B2102212110014C3113313110115D41004414111016E51015515111117F611066161000020107111771710001211181000108181001022129100111919100112313
在C语言中,八进制通常以“0”开头(注意是数字 0,而不是字母 o),例如 0307;十六进制通常以“0x”或“0X”开头(不区分大小写),例如 0xE27 或 0X89F。

下面请看八进制和十六进制加法运算的两个例子。
这是选学内容,如果你只想了解八进制和十六进制,不希望深入研究它们的运算,请忽略这部分内容,不会影响后边的学习。
1) 八进制加法:0107 + 0274 = 0403


图1:八进制加法运算

2) 十六进制加法:0XA2B + 0X276 = 0XCA1


图2:十六进制加法运算
如果你有兴趣了解不同进制之间是如何转换的,请猛击:进制之间的转换


0 0
原创粉丝点击