计算机介绍
计算机结构组成
计算机系统组成
程序和指令
- 指令是对计算机进行程序控制的最小单位。
- 所有的指令的集合称为计算机的指令系统。
- 程序是为完成一项特定任务而用某种语言编写的一组指令序列。
语言发展特性
机器语言:
- 计算机的大脑或者说心脏就是CPU,它控制着整个计算机的运作。每种CPU都有自己的指令系统。这个指令系统,就是该CPU的机器语言。
- 机器语言是一组由Q和1系列组成的指令码,这些指令码,是CPU制作厂商规定出来的,然后发布出来,请程序员遵守。
- 要让计算机干活,就得用机器语言(二级制数)去命令它。这样的命令,不是一条两条,而是上百条。而且不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行。
汇编语言和编译器:
- 机器语言编程是不是很令人烦恼呢,终于出现了汇编语言,就是一些标识符取代0与1。一门人类可以比较轻松认识的编程语言。
- 只是这门语言计算机并不认识,所以人类还不能用这门语言命令计算机做事情。这正如如何才能让中国人说的话美国人明白呢?—翻译!
- 所以,有一类专门的程序,既认识机器语言,又认识汇编语言,也就是编译器,将标识符换成0与1,知道怎么把汇编语言翻译成机器语言。
高级语言:
- 汇编语言和机器语言都是面向机器的,机器不同,语言也不同。既然有办法让汇编语言翻译成机器语言,难道就不能把其他更人性化的语言翻译成机器语言?
- 1954年,Fortran 语言出现了,其后相继出现了其他的类似语言。这批语言,使程序员摆脱了计算机硬件的限制,把主要精力放在了程序设计上,不在关注低层的计算机硬件。这类语言,称为高级语言。
- 同样的,高级语言要被计算机执行,也需要一个翻译程序将其翻译成机器语言,这就是编译程序,简称编译器。
- 这类高级语言解决问题的方法是分析出解决问题所需要的步骤,把程序看作是数据被加工的过程。基于这类方法的程序设计语言成为面向过程的语言。C语言就是这种面向过程的程序设计语言。
语言层次:
语言发展:
CPU内部结构与寄存器
程序执行过程
64位和32位系统区别:
- 寄存器是CPU内部最基本的存储单元
- CPU对外是通过总线(地址、控制、数据)来和外部设备交互的,总线的宽度是8位,同时CPU的寄存器也是8位,那么这个CPU就叫8位CPU
- 如果总线是32位,寄存器也是32位的,那么这个CPU就是32位
- CPU有一种CPU内部的寄存器是32位的,但总线是16位,准32位CPU
- 所有的64位CPU兼容32位的指令,32位要兼容16位的指令,所以在64位的CPU上是可以识别32位的指令
- 在64位的CPU构架上运行了64位的软件操作系统,那么这个系统是64位
- 在64位的CPU构架上,运行了32位的软件操作系统,那么这个系统就是32位
- 64位的软件不能运行在32位的CPU之上
寄存器名称
8位 | 16位 | 32位 | 64位 |
---|---|---|---|
A | AX | EAX | RAX |
B | BX | EBX | RBX |
C | CX | ECX | RCX |
D | DX | EDX | RDX |
寄存器、缓存、内存关系
- 按与CPU远近来分,离得最近的是寄存器,然后缓存(CPU缓存),最后内存。
- +CPU计算时,先预先把要用的数据从硬盘读到内存,然后再把即将要用的数据读到寄存器。于是CPU<–>寄存器<–>内存,这就是它们之间的信息交换。
- 那为什么有缓存呢?因为如果老是操作内存中的同一址地的数据,就会影响速度。于是就在寄存器与内存之间设置一个缓存。
- 因为从缓存提取的速度远高于内存。当然缓存的价格肯定远远高于内存,不然的话,机器里就没有内存的存在。
- 由此可以看出,从远近来看:CPU–>寄存器—>缓存–>内存。
简介
c语言特点
优点:
- 执行速度快
- 功能强大
- 编程自由
缺点:
- 写代码实现周期长
- 可移植性差
- 过于自由,经验不足易出错
- 对平台库依赖较多
应用:
C语言的应用极其广泛,从网站后台,到底层操作系统,从多媒体应用到大型网络游戏,均可使用C语言来开发:
- C语言可以写网站后台程序
- C语言可以专门针对某个主题写出功能强大的程序库
- C语言可以写出大型游戏的引擎
- C语言可以写出另一个语言来
- C语言可以写操作系统和驱动程序,并且只能用C语言编写
- 任何设备只要配置了微处理器,就都支持C语言。从微波炉到手机,都是由C语言技术来推动的
C语言的简介
32
个关键字、9
种控制语句、34
运算符、34
种运算符
32个关键字:
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while
9种控制语句:
if()~else for()~ while()~ do~while() continue break switch goto
34种运算符:
名称 | 符号 |
---|---|
算术运算符 | + - * / % ++ -- |
关系运算符 | < <= == > >= != |
逻辑运算符 | ! && || |
位运算符 | << >> ~ | ^ & |
赋值运算符 | = |
条件运算符 | ?: |
逗号运算符 | , |
指针运算符 | * & |
求字节数 | sizeof |
强制类型转换 | (类型) |
分量运算符 | -> |
下标运算符 | [] |
其他 | () |
程序编写
HelloWorld
//导入标准输入输出库
#include <stdio.h>
//包含头文件 std标准库 io input output 输入输出库 <>系统库 “” 自定义头文件
//主函数 一个程序有且只能有一个主函数
//函数的返回值类型 int整型
//函数的参数类型 void空类型
//{}程序体代码体 函数体
int main(void)
{
//打印函数 “”引起来的成为字符串常量
//转义字符 \n 换行 \t ;代表一条一句的结束 多个分号代表多个空语句
printf("hello world\n");
//函数的返回值 如果在主函数中遇到return 代表程序结束
return 0;
}
gcc编译代码
gcc编译器介绍:
- 编辑器(如vi、记事本)是指我用它来写程序的(编辑代码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行!编译器是将易于编写阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。
- gcc(GNU Compiler Collection ,Gu编译器套件),是由GNU开发的编程语言编译器。gcc原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux 、BD、Mac 等)采纳为标准的编译器,gcc同样适用于微软的Windows 。
- gcc最初用于编译C语言,随着项目的发展gcc已经成为了能够编译C、C++、java、ada、fortran 、Object C 、Object C ++、go语言的编译器大家族。
编译格式
选项 | 含义 |
---|---|
-o file | 指定生成的输出文件为file |
-E | 只进行预处理 |
-S(大写) | 只进行预处理和编译 |
-c(小写) | 只进行预处理、编译和汇编 |
注:
window - .exe; Linux - .out
编译过程
IDE使用
快捷使用
快捷建 | 含义 |
---|---|
Ctrl +k Ctrl+f | 自动格式化代码 |
Ctrl + k Ctrl + c | 注释代码 |
Ctrl + k Ctrl + u | 取消注释 |
F9 | 设置断点 |
F5 | 调试运行 |
Ctrl+F5 | 不调试即运行 |
Ctrl + Shift + b | 编译,不运行 |
F10 | next调试 |
F11 | step调试 |