一、vim编辑器
vi 文件名 或 vim 文件名
作用:创建文件
将文件在vi编辑器中打开
如果文件存在,则直接打开
如果不存在,则新建并打开
1.1vi编辑器的三种模式
1.1.1底行模式
作用:保存,退出,查找等
在其他模式下按ESC即可返回底行模式
:w 保存
:q 退出
:wq 保存并退出
:wqa 全部保存并退出,多用于多文件编辑
:q! 强制退出
:w! 强制写入[在只读的情况下强制写入]
:wa 全部保存
ctrl z /shift zz 保存退出
:vsp file 如果file文件存在打开该文件
如果file文件不存在则创建文件并打开文件
:set nonumber/nonu 取消行号
:set number/nu 设置行号
/单词 查找单词【不区分大小写】,并高亮显示
:noh 取消高亮
:%s/字符串1/字符串2 %s全文,把字符串1替换为字符串2,替换的是每一行的第一个字符串1
:%s/字符串1/字符串2/g 全文全部替换
:m,ns/字符串1/字符串2/g 把m-n行的字符串1替换为字符串2
1.1.2插入模式
作用:编写程序
其一些快捷键如下:
1.1.3命令行程序
作用:复制、粘贴、删除、 撤回
二、hello world程序说明
//# 开头的行叫做预处理行
//#include 是包含头文件的关键字
//stdio.h 是标准输入输出的头文件 我们使用的printf函数就在这个头文件
//#include "": 现在当前目录下找头文件,找不到区系统库中查找
//#include <>:直接在系统库中查找头文件
#include <stdio.h>
//int 函数的返回值类型--先不用管
//main 主函数是程序的入口 每个程序必须有且仅有一个
// ()圆括号 []方括号 {}花括号
//main函数后面的()里面是函数的参数----先不用管
//int main(){这种写法和下面的写法暂时是一样的
int main (int argc,const char *argv[]){
//{}里面包住的就是我们自己的代码 也就是程序要执行的部分
//printf 是系统给我们提供的输出的函数 功能是将""里面的内容输出到终端
// \n表示换行的意思 就是回车
printf("hello world\n"); //C语言中每条指令结束 需要有一个分号
//return 0 是函数的返回值 ----先不用管
return 0;
}
三、编译方式
gcc xxx.c xxx.c就是我们自己的.c文件名
这种编译方式,默认会再当前路径下生成一个叫做a.out的可执行文件
使用./a.out 就可以执行了
./文件名 即可执行
gcc xxx.c -o 自定义的可执行文件名
3.1按照编译流程分布编译(面试官有可能会问编译流程)
预处理-->编译-->汇编-->链接
四、进制
进制:按照某种规则进行运算
之后常用到的有二进制、八进制、十六进制
生活中各种进制都会时常出现
进制 | 占位符 | 数码 | 位权 | 基数 |
十六进制 | 0x | 0--9 10-15(A--F) | 16^n 16^(n-1) ..16^1 16^0 | 16 |
二进制 | 0b | 0-1 | 2^n 2^(n-1) ..2^1 2^0 | 2 |
八进制 | 0 | 0-7 | 8^n 8^(n-1) ..8^1 8^0 | 8 |
4.1进制的转换
i)十进制转换N进制
除以N,逆向取余
ii) N进制转换十进制
位权展开求和法
4.2十进制
是方便人类识别的表示形式
前导符:没有前导符
特点:逢10进1,每一位上的数字智能是[0,9]
例如:4399 520 1314 ...
4.3 二进制
方便计算机识别的数据
前导符:0b
特点:逢2进1,每一位上的数字只能是0或者1
例如:0b01011010 0b110010
二进制转换十进制
0b1010110-->从右向左 0 * 20 + 1 * 21 +1 * 22+0 * 23+1 * 24 +0 * 25+1 * 2^6
==0+2+4+0+16+0+64
==86
注意:其他任何进制转十进制都可以使用这种方式
只不过把底数的2换成对应进制的数字即可
十进制转二进制:
辗转相除法(除2取余法)
使用十进制的数除以2,保留商和余数,然后用商继续除以2
在保留商和余数,依次类推,直到商为0时结束。
最后,将得到的余数倒序取出,就是对应的二进制数了。
例如:将十进制的47转换成二进制
0100 0111
4 7
十进制和二进制的转换 也可以使用8421的方法:
8421指的是二进制不同位上面的1 表示的权重
1000 8
0100 4
0010 2
0001 1
无符号数:所有位表示数值位 [0--255] 0000 0000——> 1111 1111
有符号数:最高表示符号位(1表示负,0表示正),剩下表示数值位 [-128,+127]
0000 0000——> 0111 1111
1000 0000——> 1111 1111
有符号数中只存在0000 0000,而1000 0000则代表-128
4.4 八进制
前导符:0
特点:逢8进1,每一位上的数字只能是[0,7]
例如:0334 0765 0123
八进制转二进制:
方式1:八先转十,然后十转二
方式2:1位八进制数对应3位二进制数
0627-->0b110010111
二进制转八进制:
从右向左,每3为二进制数对应1位8进制数 高位不足时补0
0b 011 101 011 -->0 3 5 3
3 5 3
4.5 十六进制
前导符:0x
特点:逢16进1,每一位上的数字只能是[0,9] a=10 b=11 c=12 d=13 e=14 f=15
例如:0xAB12 0XEF57 0XABC
十六进制转二进制:
方式1:十六先转十,然后十转二
方式2:1位十六进制数对应4位二进制数
0xAB18-->0b 1010 1011 0001 1000
A B 1 8
二进制转十六进制:
从右向左,每4为二进制数对应1位16进制数 高位不足时补0
0b 0110 1011 0101 -->0x 6 B 5
注意:不管几进制的数据,在计算机中都会转换成二进制来处理。
五、二进制的计算
无符号数的原反补相同
有符号数的正数原反补也相同
而负数则有以下规则:
例如:利用-1-2进行推演