关闭

补课

88人阅读 评论(0) 收藏 举报
学习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

二进制、八进制、十进制、十六进制的对应关系
十进制 二进制 八进制 十六进制 十进制 二进制 八进制 十六进制
0 0 0 0 10 1010 12 A
1 1 1 1 11 1011 13 B
2 10 2 2 12 1100 14 C
3 11 3 3 13 1101 15 D
4 100 4 4 14 1110 16 E
5 101 5 5 15 1111 17 F
6 110 6 6 16 10000 20 10
7 111 7 7 17 10001 21 11
8 1000 10 8 18 10010 22 12
9 1001 11 9 19 10011 23 13

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

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


图1:八进制加法运算

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


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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:517次
    • 积分:64
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:2篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论