计算机构成
计算机是由输入设备、输出设备、内存储器、外存储器、CPU构成,具体框图如下:
输入设备:将其他信号转换为计算机能识别的电信号的设备,如传感器
输出设备:将电信号转换为其他信号,如显示器
存储器:存储器分为内存、外存、寄存器。
- 内存又称为主存储器,存放程序中待处理的数据和处理结果,掉电会丢失
- 外存用于存放长期保存的数据,掉电不丢失
- 寄存器是CPU内部的高速存储器,速度快、按位存储,比内存外存都要小
- 计算机的程序存储在外存上(磁盘),被加载到内存中去执行
CPU:CPU分为运算器和控制器
- 运算器用于进行算数运算、逻辑运算
- 控制器用于控制CPU执行程序
各个语言的区别
计算机编程语言的发展框图如下:
机器语言:是CPU直接能读懂的语言,就是0/1序列
汇编语言:汇编代码与机器码一 一对应,区别是汇编代码人可以读懂
- 汇编不能够兼容不同的CPU体系结构,不同的架构,计算机指令不同,机器码也不同,因此移植性差。
高级语言:高级语言通过编译器编译转换成汇编语言,汇编语言通过汇编转换成机器码,不同的CPU有着不同的编译器,这样高级语言就可以解决移植性差的问题。
下面是各种语言所处的位置:
C语言的特性
C语言具有效率高、灵活性高、可移植性高的特点。
- 效率高:C语言是编译型语言,与之相对的是解释性语言。编译型语言是将整个源代码通过编译器编译成机器语言,最终打包成一个可执行文件。而解释性语言是一行一行进行解释,通过解释器将这一行代码解释为机器语言,之后再解释一行,从而完成整个代码的解释。
- 灵活性高:既有高级语言便于学习的特点,又可以通过指针访问硬件,实现汇编一样操作底层的功能。
- 可移植性高:C语言是标准化的语言,C代码可在不同的操作系统和计算机上进行运行。对于不同的硬件,可以通过不同的编译器转换成对应的汇编指令,而C代码可以不变。转换框图如下:
大端模式与小端模式
大小端指的是在存储器中,存放数据的字节顺序
- 小端模式,是指数据的低字节保存在内存的低地址中(低存低)
- 大端模式,是指数据的低字节保存在内存的高地址中(低存高)
测试代码如下:
//存储模式测试,大端模式or小端模式
void StorageModeTest(void){
int test = 0x11223344;
char* p = (char*)&test;
printf("int test = 0x11223344\n");
printf("start address:%p\n",&test);
printf("%p = %#x\n",p,*p);
p++;
printf("%p = %#x\n",p,*p);
p++;
printf("%p = %#x\n",p,*p);
p++;
printf("%p = %#x\n",p,*p);
p = (char*)&test;
if(*p = 0x44){
printf("this is small end\n");
}else if(*p = 0x11){
printf("this is big end\n");
}else{
printf("err\n");
}
}