上节知识补充
1.Linux下打开文本编辑指令 相当于Windows下的记事本
gedit filename.txt
Ubuntu窗口下可以使用快捷键ctrl+s保存,用Alt+F4 关闭窗口
查看文件内容:
cat path/filename
vi/vim编辑器的使用
打开 编辑器
vi path/filename
注:(文件不存在时会自动创建)
此时进入标准模式
1.标准模式(默认)Normal:
在标准模式下,可以执行以下操作
复制 : 将光标移动到需要复制的行 n + yy
粘贴 : 将光标移动到需要粘贴的行 p
剪切 :将光标移动到需要剪切的行 n + dd
撤销 : u
选中操作: v + 移动选中范围 + y(复制)、d(剪切) + p (粘贴)
查询: /关键词 寻找时按键盘 n下一个,上一个:shift + n;
2.插入模式:键盘的输入会定向到文件内容缓冲区; 标准模式 => 插入模式:按键盘的“i”键位
插入模式 => 标准模式;Esc
3.命令模式:键盘的输入会定向到底行命令缓冲区;
标准模式 => 命令模式:shift“:”+ 命令
其中的命令有以下几种:
w: 写入;
q: 退出;
!:强制执行
wq:保存并退出
q!:强制退出
水平分屏: vsp + path/filename
垂直分屏: sp + path/filename
切换:ctrl + ww
wqa: 全部保存并退出;
常用的操作是按Esc退出插入模式 ,然后按shift+: 输入wq 保存编辑并推出。
:wq
第一个c语言代码
编辑源码:不带.c后缀 没有高亮提示
vi/vim hello.c
#include<stdio.h> //包含头文件
int main(void) //主函数函数首部
{
printf("Hello world!\n");
return 0;
}
编译源码:不带.c后缀 不能编译
gcc + xxx.c
warning :警告 在编译过程中,遇到未知风险;
error: 错误 在编译过程中,遇到致命问题;
无论是警告⚠,还是错误❌ 都需要去改错。
编译出可执行文件 (绿色)并起名 gcc xxx.c -o xxx.out
使用 ./xxx.out 来执行文件
进制转换 注: 此部分参考【精选】超详细进制转换(二进制、八进制、十进制、十六进制)详解_爱躺平的威威的博客-CSDN博客
这里选择一些我比较薄弱的地方进行复习。
整型有4种进制形式:
1.十进制,简写为D: 都是以0-9这九个数字组成,不能以0开头。
2.二进制,简写为B: 由0和1两个数字组成。
3.八进制,简写为O: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
4.十六进制,简写为H:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始。
十进制=>其他进制
1.十进制转二进制的原理:
整数部分:十进制数除以2,余数为权位上的数,得到商继续除以2,直到商为0终止,然后反向取余数。
小数部分:乘2取整,直到符合要求为止,顺序输出
如78.725的整数部分为78,小数部分为0.725
78=64+8+4+2 => 1001110 这步可以按128 64 32 16 8 4 2 1分别对应位置1111 1111
0.725×2=1.45 ........1
0.45×2 =0.9 ........0
0.9×2=1.8 ........1
0.8×2=1.6..............1
0.6×2=1.2..............1
0.2×2=0.4..............0
0.4×2=0.8................0
............ 取不完无穷了
按顺序取整 1011100
78D=1001110.1011100B
十进制转其他进制同理
2.其他进制转十进制
把R进制数按权展开、相加即得十进制数。
3.二进制转其他进制
程序 = 数据结构 + 算法
对数据的描述。在程序中要指定用到哪些数据,以及这些数据的类型和数据的组织形式。这就是数据结构(data structure)。
对数据的描述。在程序中要指定用到哪些数据,以及这些数据的类型和数据的组织形式。这就是数据结构(data structure)。
如何区分数据结构和算法?
假设我们要设计一个可以查询电话号码的号码簿,那么
- 如何表示和存储电话号码簿的所有信息—数据结构设计
- 如何实现快速查找----算法设计
算法 = 逻辑 + 控制
软件 = 数据结构 + 算法 + 文档
C语言的基本数据类型
32位平台下
数据溢出
数据类型确定了这个空间所能盛放的数据的最大值和最小值。
比如:char a;那么a的数据大小为:-2^7~2^7-1即:-128~127
unsigned char a;那么a的取值范围为:0~2^8-1 即0~255
如果使用char型存放一个200,那么就超出了char型数据所能表示的数据范围,程序会按照一定的规则将这个200转化为-128~127这个范围中的某个数后再去进行存储。
规则:
数据范围的表示是一个环状结构.
如果数据增长到最大值,则数据从最小值方向开始依次递增
如果数据减到最小值,则数据从最大值方向开始依次递减
sizeof运算符
获取变量或者数据类型在内存中占用的字节数;
内存与cpu
- 越靠近CPU价格越贵,访问速度越快,容量越小
机算机中主要的存储部件是内存和磁盘。磁盘中存储的程序加载到内存中运行。即使CPU可以直接读出并运行磁盘中保存的程序,由于磁盘读取速度慢,程序的运行速度还是会降低的。
- CPU访问速度从快倒慢依次为:1.寄存器 2.一级缓存 3.二级缓存 4.三级缓存 5.内存 6.硬盘
硬件结构
- 地址总线:专门用来指定 CPU 将要操作的内存地址。
- 控制总线:发送和接受信号,常见信号例如:复位(初始化操作)、中断请求/响应、存储器读写、IO读写
- 数据总线:主要用于在CPU 和内存之间往返传输需要处理或存储的数据