W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
C中的二元運(yùn)算符<<和>>執(zhí)行移位操作。運(yùn)算符<<執(zhí)行左移操作而運(yùn)算符>>執(zhí)行右移操作。這些運(yùn)算符有兩個(gè)操作數(shù)。左邊的操作數(shù)是需要移位的數(shù)值,右邊的操作數(shù)是需要移的位數(shù)。如果需要移位的數(shù)值是無符號(hào)類
型,那么就執(zhí)行了一次邏輯移位。如果需要移位的數(shù)值是有符號(hào)類型(比如:int),那么就執(zhí)行了一次算術(shù)移位。下面是一些使用了這些運(yùn)算符的C代碼例子:
在C中使用按位運(yùn)算的目的與在匯編語言中使用按位運(yùn)算的目的是一樣的。它們可以允許你操作數(shù)據(jù)的單個(gè)比特位,而且可以用在快速乘除法中。事實(shí)上,一個(gè)好的C編譯器應(yīng)該可以自動(dòng)用移位來進(jìn)行乘法運(yùn)算如:x*= 2。
許多操作系統(tǒng)的API(例如:POSIX和Win32)包含了一些函數(shù),這些函數(shù)使用的操作數(shù)含有按位編碼的數(shù)據(jù)。例如:POSIX系統(tǒng)就為三種不同類型的用戶保留了文件的權(quán)限:user (用戶,owner可能是一個(gè)更好的名字),group(組用戶)和others(其它用戶)。每一種類型的用戶可以被授予進(jìn)行讀,寫和/或執(zhí)行一個(gè)文件的權(quán)限。要改變一個(gè)文件的權(quán)限,要求C程序員進(jìn)行單個(gè)的位操作。POSIX定義了幾個(gè)宏來做這件事(看表3.6)。chmod函數(shù)可以用來設(shè)置文件的權(quán)限。這個(gè)函數(shù)有兩個(gè)參數(shù),一個(gè)是表示需設(shè)置的文件文件名的字符串,另外一個(gè)是為需要的權(quán)限設(shè)置了正確位的整形 。例如,下面的代碼設(shè)置了這樣的權(quán)限:允許文件的owner用戶對(duì)文件可讀可寫,在group中的用戶權(quán)限為可讀而others用戶沒有權(quán)限訪問。
POSIX中stat函數(shù)可以用來得到文件的當(dāng)前權(quán)限位。與chmod函數(shù)一起使用,它可以用來改變某些權(quán)限而不影響到其它權(quán)限。下面是一個(gè)移除文件的others用戶的寫權(quán)限和增加owner用戶的讀權(quán)限的例子。同時(shí),其它權(quán)
限沒有被改變。
1 struct stat file_stats ; /* stat()使用的結(jié)構(gòu)體*/
2 stat ("foo", & file stats ); /* 讀文件信息ˉle stats.st mode中有權(quán)限位*/
3 chmod("foo", ( file stats .st_mode & ~S_IWOTH) | S_IRUSR);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: