位运算
- 按位与运算:
&
双目运算符,二进制各位都为1结果位才为1,否则为0。通常参与位运算某些位清零或保留某些位
- 按位或运算:
|
双目运算符,二进制各位只要有一个为1时,结果位就为1。
- 按位异或运算:
^
双目运算符:相同时为零,不同时为1。
*求反运算符
对二进制的各位进行取反的运算。
- 左移运算:
<<
双目运算符,右边的数指定移动的位数,高位丢弃,低位补零。
- 右移运算符:·
>>
双目运算符,左边的运算数的各二进制各部右移若干位。
经典的例子:
char a = 'a',b = 'b';
int p,c,d;
p = a;
p = (p<<8)|=b;
d = p&0xff;
c = (p&0xff00)>>8;
printf("%d%d%d%d",a,b,c,d);
return 0;
}```
###C语言编程要点
#####1,储存空间布局:
1)正文段--CPU执行的机器指令部分
2)初始化数据段(数据段)
3)非初始化数据段(BBS段)
4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保护的信息
5)堆——动态存储分。
Head是堆
stack是栈
###课堂笔记
#####1,路径
* 绝对路径:是以根目录(/)为起点的路径。
`/home/prc/桌面/1207/test.c`
* 相对路径:是以当前目录或者家目录为基础的路径。
`/桌面/1207/test.c`
#####2,cd
跳转命令
`~`:回到家目录中下;
`-`:回到上一次的工作目录;
#####3,mkdir
创建目录:`mkdir [选项] 目录`
`-p`:递归创建多级目录(多级路径);
`mkdir -p a/b/c/d`
#####4,rmdir
删除目录(不能删除空目录)
`rmdir -p a/b/c/d`递归的删除空目录,由于其他原因,可能会部分保留。
#####5,rm
删除文件:`rm [选项] 文件`**(此方法不可逆)**
`-r`:删除(**非空**)目录;
`-i`:与用户进行交互,进行删除操作时,给出提醒;
`-ir`:会进入目录中,并提示是否删除目录中的文件,(删除目录时,先递归的删除目录中的文件,然后在删除目录自身!);
`-f`:强制删除文件,不给出任何提示`(-rf`)。
`*`:通配符,如果要删除大量文件名类似的文件,可用通配符删除,例如:
```test/ tesr/ testt/
rm -r tes*/
1rew/ 2rew/ 3rew/ 245rew/
rm -r *rew
1.txt 2.txt 3.txt
rm -r *.txt
rm *.*```
6,touch
创建普通文件:1)创建不存在的普通的文件`touch filename`
```file: .txt .doc .dat filename .c .h .cpp .hpp```
2)若文件已存在,则更新时间戳
3)创建多个文件:
```touch 1.doc 2.doc
touch {1..10}.txt
touch test{A..Z}.txt```
7,mv
移动:``mv [选项] 源文件 目的文件`
1)`mv 1.txt t.txt`
原地移动,若目的文件不存在,文件重命名
用gedit编辑文件产生的备份文件即filename~,可用mv命令进行恢复
若目的文件以及存在,则进行覆盖
2)`mv *.txt /路径/`
跨路径移动,将文件移动到目的目录中
`mv *.txt /路径/filename`
跨路径移动并重命名;
3)`mv /路径/filename /路径/filename`
* `~/文档 `:相对路径
* `/home/prc/文档`:绝对路径
4)`mv 源目录文件 目的目录文件`
若目的目录文件不存在,则移动重命名
若目的目录已存在,则源目录整体移动到目的目录中
8,cp
`cp [选项] 源文件 目标文件`
1)`cp filename1 filename2`
完成对filename1的拷贝,此时源文件还存在
2)`cp filename1 /路径/`
复制文件到指定路径
3)`cp filename1 /路径/ filename2`
复制文件到指定的路径,并且重新命名。
4)`cp /路径/filename1 /路径/filename2`
复制指定路径下的文件到另一个路径,并命名;
5)`cp -r 源目录名 目的目录名`
目的目录存在时,直接将源目录名复制到目的目录下,作为目的目录的一个子目录,并且完成源目录中内容的拷贝
目的目录不存在时,完成源目录的复制并且重新命名为目的目录名
6)`cp -r /路径/ /路径/`
7)`cp -i filename1 filename2`
与用户进行交互,若filename2存在,则提示时候覆盖,
若不存在,则直接复制
`cp -i /路径/filename1 /路径/filename2`
8) `cp -ir 源目录 目的目录`
若目的目录不存在同名目录,则复制并重新命名,
若目的目录已存在同名目录,则将两个目录合并,相同内容提示是否覆盖,不相同内容则直接复制。
9,`cat,more,less,info`
1)cat查看文件内容(全屏一次列写)
`cat filename1 filename2`
`cat -n file`匹配文件行号
`cat -b file`略过空白行显示当前行号
2)`more file`
分屏查看文件内容,按空格键查看下一页,回车逐行查看,q退出
3)`less file`
分屏查看文件内容
空格键,上下键,pagedown,pageup,回车键均可
按行按页均可查看,q键退出。
4)`help `
ls --help
5)`man`
帮助文档
6)`info`
5)`man`
10)`head、tail`
`head file`:查看文件的前10行
`tail file`:查看文件的尾10行
默认为10行
选项:
`head -n file`:查看文件的前n行
`tail -n file`:查看文件的后n行
11)`sudo、su`
* `sudo`临时提权
临时赋予用户超级用户权限。此操作需要输入用户密码。
命令行安装软件,对部分文件的删除操作,以及更改文件权限等等
* su 超级用户
`su - root`
建议使用“-”,把超级用户的工作环境和目录都切换,防止因环境变量问题不能够正常使用,
密码问题不能使用,使用`sudo passwd`更改密码;超级用户操作不需要输入密码。
\#:超级用户$:普通用户
退出超级用户方法:1,ctrl + d, 2,exit 3,关闭终端 4, su - prc
12)文件的权限问题
`rwx`:可多可写可执行
```prc@ubuntu:~$ ls -l 1
-rw-rw-r-- 1 prc prc 355 Dec 7 15:35 1.c```
`-` 文件属性(普通文件)
`rw-`文件拥有者权限(可读可写) `u`
`rw-`所属组权限(可读可写) `g`
`r--`其他用户权限(可读) `o`
* 修改文件权限
`chmod 权限 文件`
权限:
权限标识符:r,w,x,-
八进制权限:0,1,2,3,4,5,6,7
例:
```-rw-rw-r-- 1 prc prc 355 Dec 7 15:35 1/1.c
prc@ubuntu:~$ sudo chmod o+wx(667) 1/1.c
-rw-rw-rwx 1 prc prc 355 Dec 7 15:35 1/1.c
prc@ubuntu:~$ sudo chmod o-wx(664) 1/1.c
-rw-rw-r-- 1 prc prc 355 Dec 7 15:35 1/1.c```
####作业:
1,熟悉cd,mv,cp,rm命令的使用,并熟练掌握
已完成
2,了解普通用户与超级用户的切换
`sudo - root`
`sudo passwd`输入密码
退出的四种方法:`ctrl + d`
`exit`, `su - prc`,`关闭终端`。
3,文件权限修改的两种方法
一种根据u,g,o加减rwx进行操作,另一种根据八进制直接赋值
4,创建非空目录和非空文件,并修改其权限0~7(八进制),查看对应权限的文件的操作有哪些不同
已完成