一、计算机组成
输入、输出、运算、控制、存储
CPU作用:运算和控制、逻辑、寄存器
内存作用:协调CPU和硬盘的交互
缓存作用:协调CPU和内存的交互
题外:
排序好不好:样品规模、存储介质、数据结构
那冒泡排序和选择排序哪个更好?
看具体使用场景。
例如磁带。
可以应用冒泡排序,因为冒泡排序可以顺序访问,相邻交换。
而选择排序不是顺序访问,是随机访问。要先找出最小的数,置于一端,然后再找到最小数置于一端,依次进行下去。这时效率(速度)就没冒泡排序好。
局部插入排序:可以用于纸牌,因为代价小,而应用在麻将上将不适合,因为代价大。
二、进制
1、普通进制转换
例:
xyz(n) = x * n^2 + y * n^1 + z * n^0
以十进制为例:
求得xyz(10)百位十位个位的个位数:
那么,
xyz % 10 ---->求得个位数
xyz / 10 % 10 --->求得十位数的个位数
xyz / 100 -->求得百位数的个位数
二进制转十六进制
对二进制每4位进行分割,将其转化为对应的十六进制,如果分割的二进制位数不够,将自动补零。
例如: 1101110
二进制: 110 1110
0110 1110
16进制: 6 E
3、小数的进制:
可以用乘2取整法:
例子:
0.358(10)=XXXX(2)
0.358
x 2
--------------
0.716 ---->取0
x 2
--------------
1.432 ---->取1
0.432
x 2
--------------
0.864 ---->取0
x 2
--------------
1.728 ---->取1
....................
这是乘不尽的
结果为:0.0101.......
除非小数位是0.5的幂(例如0.5(0.51),0.25(0.52),0.125(0.5^3).......),这样乘2,直到等于1,才会结束。否则将一直计算下去。
三、浮点数
例子:
f == 0.3f;
(f - 0.3) <= 0.0000001 && (f - 0.3) > = -0.0000001
-------------
这是精度要求(据实际要求而定)
四、移位
A/C = A * (1/C )= A * ( (2^n)/C) * (1/(2^n)) = A * ((2^n)/C) >> n
A * (2^n)
乘法运算:相当于 A << n ,左移n位
除法运算:相当于A >> n , 右移n位
五、补码
1、计算机(CPU)只会做加法和位运算,所以引申出补码。
以A - B为例
解:
A - B = A + (100h - B) - 100h [h表示十六进制
B + ~B = ff
B + ~B + 1 = 100h
~B + 1 = 100h - B
代入
A - B = A + (~B + 1) -100h
定义求补运算为字长的表达范围减去A
求补:运算法则,类似加减乘除运算
补码:编码规则
将A编码为补码
最高位为符号表达位
a、当A > =0 时,最高位表达位为0,其余各位填写A的二进制值,不足的字长部分高位填0.
例:A = 110100
二进制 0 011 0100
16进制 3 4
正数:原码反码补码是一致相同的
b、当A < 0 时,最高位表达位为1,其余各位填写A求补的二进制值,不足的字长部分高位填1.
例:A = -30
二进制: - 11110
1001 1110
反码: 1110 0001
加一: + 1
补码: 1110 0010
负数就相当于补码
A - B = A + (-B)
六、字符串和字符区别
字符串:表示的是地址。(存储位置)
字符:表示的是数值(ASCII码表中的对应的序号)
七、编译和链接
编译:把高级语言转为机器语言
例如:
进入当前文件所在的路径> cl /c test.c
编译后,会生成一个obj格式的文件
链接:生成一个可执行文件
进入当前文件所在的路径>link test.obj
链接后,会生成一个以exe结尾(windows平台)的可执行文件
八、讲解简单C程序
include<stdio.h>
int main(void){
printf("Hello world!");
return 0;
}
a、预处理阶段:
include<stdio.h>和#include"stdio.h",效果是一样的。
因为stdio.h是IDE自带的,所以效果一样。
但当我们自做头文件的时候,我们要用双引号的方式。
<>是先找系统环境变量,再找当前目录下的环境变量
双引号是相反,先找当前目录下的环境变量,再找系统环境变量。
命令行: /P 可查看预处理
b、int main()
当执行完预处理后,要执行头文件里的有关main()函数定义后,才会执行main()
c、printf()函数
重定向输出
test.exe > test.txt
可以用记事本输出
test.exe > \127.0.0.1\f$\xxxxx\test.exe
---------
目录路径
可以通过网络输出
d、return
和main()一样,先执行头文件中有关return的定义,再执行return。
网友评论