基于Linux学习 C语言——基础 DAY4

一、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进行推演

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值