from http://www.learncpp.com/cpp-tutorial/38-bitwise-operators/
前面的文章在 http://www.cnblogs.com/grass-and-moon/
位操作符的由來主要是為了更充分的利用內(nèi)存,如果使用bool型變量,它是一個字節(jié)大小,其中一個字節(jié)的內(nèi)存中只有一個位被利用,其余的位都被浪費(fèi)了。但是現(xiàn)在內(nèi)存是充裕的,程序員發(fā)現(xiàn)往往將代碼表達(dá)的更加讓人理解,更加容易維護(hù)是一種更好的選擇。
因此,位操作符的使用不再像最初那么平常了,除了一些特殊的環(huán)境中,如需要巨型數(shù)據(jù)處理的科學(xué)計算,或需要超速執(zhí)行的游戲中,仍然會被使用。不管怎么樣,對它有個充分的認(rèn)識和理解還是必須的。
Operator | Symbol | Form | Operation |
left shift | << | x << y | all bits in x shifted left y bits |
right shift | >> | x >> y | all bits in x shifted right y bits |
bitwise NOT | ~ | ~x | all bits in x flipped |
bitwise AND | & | x & y | each bit in x AND each bit in y |
bitwise OR | | | x | y | each bit in x OR each bit in y |
bitwise XOR | ^ | x ^ y | each bit in x XOR each bit in y |
注意 當(dāng)我們使用位操作符時,使用的變量類型通常是無符號整型。
為操作符的原理通常很簡單,但是要將它用活,通常是有一定難度的。