c/c++中常用的二進制運算符有六個.這里對這六個做簡單的介紹和應用舉例.
1. & : 與 操作.作用於兩個二進制數,當然也可以對整型數據進行操作(當兩邊為整型數據會自動轉化為二進制數).二進制與用來對位進行置零或者復位.如果兩個值進行二進制與,只有當兩個對應的位都為1時結果位上為1(同1結果為1,有0結果為0),其他情況都為0.如下:
01011001 & 00101001
結果為:00001001
2. | :或 操作.和1的與操作類似.用來合並值.只有當兩個對應位都為0,結果位為0(有1結果為1,同0 結果為0),其他情況都為1.例如:
01011001 | 00101001
結果為:01111001
3. ^ :異或 操作.這個運算符當兩個值在某一位上相同時結果位為0,不同結果為1.如一個是1一個是0(相同為0 不同為1),結果位是1;兩個都為1或者0結果位是0;例如:
01011001^00101001
結果為:01110000
4.~ :求補操作.這個運算符只對一個二進制數據進行操作,對該數每一位取反,(即1變為0,0變為1).例如:
~01011001
結果為:10100110
最后兩個為移位操作符.這兩個操作符用來對一個值中的位左移或右移某個特定數字的位數.">>"右移操作."<<"左移操作. "<<"左移操作:向左移動n位,相當於原數乘以2的n次方;存在問題:左移可能改變一個數的正負;
">>"右移操作:向右移動n位,值等於原值除以2的n次方;
例如:
01011001>>2 01011001<<2
結果為:0010110 01100100
實用技能:
想要獲取一個數的最低位,讓這個數和1 進行&操作,都會得到這個數的最低位;例如:
00000011010001 & 00000000000001
最終結論為: 1&單數結果為1
1&雙數結果為0