国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Assembly C中的按位運(yùn)算

2018-10-28 10:49 更新
不同于某些高級語言的是,C提供了按位操作的運(yùn)算符。AND運(yùn)算符用二元運(yùn)算符&來描述。OR運(yùn)算符用二元運(yùn)算符|來描述。而NOT運(yùn)算符是用一元運(yùn)算符~ 來描述。


C中的二元運(yùn)算符<<和>>執(zhí)行移位操作。運(yùn)算符<<執(zhí)行左移操作而運(yùn)算符>>執(zhí)行右移操作。這些運(yùn)算符有兩個操作數(shù)。左邊的操作數(shù)是需要移位的數(shù)值,右邊的操作數(shù)是需要移的位數(shù)。如果需要移位的數(shù)值是無符號類

型,那么就執(zhí)行了一次邏輯移位。如果需要移位的數(shù)值是有符號類型(比如:int),那么就執(zhí)行了一次算術(shù)移位。下面是一些使用了這些運(yùn)算符的C代碼例子:


C代碼例子


在C中使用按位運(yùn)算的目的與在匯編語言中使用按位運(yùn)算的目的是一樣的。它們可以允許你操作數(shù)據(jù)的單個比特位,而且可以用在快速乘除法中。事實(shí)上,一個好的C編譯器應(yīng)該可以自動用移位來進(jìn)行乘法運(yùn)算如:x*= 2。


許多操作系統(tǒng)的API(例如:POSIX和Win32)包含了一些函數(shù),這些函數(shù)使用的操作數(shù)含有按位編碼的數(shù)據(jù)。例如:POSIX系統(tǒng)就為三種不同類型的用戶保留了文件的權(quán)限:user (用戶,owner可能是一個更好的名字),group(組用戶)和others(其它用戶)。每一種類型的用戶可以被授予進(jìn)行讀,寫和/或執(zhí)行一個文件的權(quán)限。要改變一個文件的權(quán)限,要求C程序員進(jìn)行單個的位操作。POSIX定義了幾個宏來做這件事(看表3.6)。chmod函數(shù)可以用來設(shè)置文件的權(quán)限。這個函數(shù)有兩個參數(shù),一個是表示需設(shè)置的文件文件名的字符串,另外一個是為需要的權(quán)限設(shè)置了正確位的整形 。例如,下面的代碼設(shè)置了這樣的權(quán)限:允許文件的owner用戶對文件可讀可寫,在group中的用戶權(quán)限為可讀而others用戶沒有權(quán)限訪問。


POSIX文件權(quán)限宏

chmod("foo", S_IRUSR | S_IWUSR | S_IRGRP );


POSIX中stat函數(shù)可以用來得到文件的當(dāng)前權(quán)限位。與chmod函數(shù)一起使用,它可以用來改變某些權(quán)限而不影響到其它權(quán)限。下面是一個移除文件的others用戶的寫權(quán)限和增加owner用戶的讀權(quán)限的例子。同時,其它權(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);

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號