運算符號
運算法則
與(&)
兩個 位都為1時值才為1
或()兩個 位只要有乙個數為1,值就為1––
非(~)
取反,0變成1,1變成0
異或()
兩個位相同為0,相異為1––
記住一點,位運算是將十進位制的數轉化為二進位制後進行的運算,就像十進位制的加減乘除一樣,不過二進位制下更多的是加1,減1,乘以2,除以2,因為是二進位制嘛
例如,32&8結果是幾呢,我們來看看
32在二進位制下表示為0001 0000
8在二進位制下表示 為 0000 1000
進行位與運算,因為兩個位都為1時,值才為1
所以結果是0000 0000
`#include
using namespace std;
int main()
`
果不其然,執行結果為0
在或運算中兩個開關是併聯的,即乙個開關開,則燈開。
如果任意乙個開關開了,燈都會亮。
只有當兩個開關都是關的,燈才不開。
理解為a(或)|b任意開則開
我們還是舉個例子
例如32與8進行或運算,
32在二進位制下表示為 0001 0000
8在二進位制下表示 為 0000 1000
(從左往右規定第幾位)
第一位,0與0進行或運算,結果為0,因為都是零,沒有1;
第二位,0與0進行或運算,結果為0,因為都是零,沒有1;
第三位,第六位,第七位,第八位都類似;
第四位,第五位是1與0進行或運算,因為兩個 二進位制位上有乙個1,所以結果為0;
最後結果為0001 1000,再進行強制轉換,輸出40;
**如下;
#include
using namespace std;
int main()
{cout<<(int)(32|8);
return 0;
我們對32進行非運算,正如名字所說,取反,取反,取反
非運算即取反運算,在二進位制中1變0,0變1
運算方法:取相反數減一
異或運算通俗地講就是一句話
同為假,異為真
數字dp(邦的軒轅)
數字dp是一種計數用的dp,一般就是要統計乙個區間 le,ri 內滿足一些條件數的個數。所謂數字dp,字面意思就是在數字上進行dp咯。數字還算是比較好聽的名字,數字的含義 乙個數有個位 十位 百位 千位 數的每一位就是數字啦!之所以要引入數字的概念完全就是為了dp。數字dp的實質就是換一種暴力列舉的...
位運算 57 普通的位運算
要求說明 當 a 2,b 4,c 6,d 8時程式設計求a c b d a d a的值。解 單目運算子 都是對對應整數轉化成二進位制數後按位比較計算 兩個相應二進位中,都為1,該位為1,否則為0 兩個相應二進位中,有乙個1,該位為1,否則為0 兩個相應二進位,相同為0,不同為1 單目運算子,作用對二...
標誌位的位運算應用
今天設計新版標誌位,老郭提出了乙個新的方案。以往都是乙個字段設定乙個狀態,tinyint型別,0或者1,但是這樣的壞處是如果乙個資訊表有很多狀態,需要增加很多的字段,空間利用不好,所以他提出用二進位制位運算來解決標示位的問題。設定標示位字段位tinyint型別,也就是最大128,換成二進位制就是有8...