位運算
- 按位與運算:
&
雙目運算符,二進制各位都為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(八進制),查看對應權限的文件的操作有哪些不同
已完成