接下來看看「位元運算子」(Bitwise operator),數位設計上有AND、OR、NOT、XOR與補數等運算,在C++中提供這些運算的就是位元運算子,它們的對應分別是AND (&)、OR(|)、NOT(!)、XOR(^)與補數(~)
位元運算對初學者來說的確較不常用,但如果用的洽當的話,可以增進不少程式效率,例如下面這個程式可以判斷使用者的輸入是否為奇數:
#include <iostream>
using namespace std;
int main() {
int input = 0;
cout << "輸入正整數:";
cin >> input;
cout << "輸入為奇數?"
<< (input&1 ? 'Y' : 'N')
<< endl;
return 0;
}
執行結果如下:
輸入正整數:5
輸入為奇數?Y
這個程式得以運算的原理是,奇數的數值若以二進位來表示,其最右邊的位元必為1,而偶數最右邊的位元必為0,所以您使用1來與輸入的值作AND運算,由於 1除了最右邊的位元為1之外,其它位元都會是0,與輸入數值AND運算的結果,只會留下最右邊位元為0或為的結果,其它部份都被0 AND運算遮掉了,這就是所謂「位元遮罩」,例如:
00000100 4
00000001 1
00000000 判斷為偶數
00000011 3
00000001 1
00000001 判斷為奇數
出處:http://caterpillar.onlyfun.net/Gossip/CppGossip/LogicalBitwise.html
文章標籤
全站熱搜
