位運算作者(邦的軒轅)

2021-10-06 10:17:52 字數 1207 閱讀 3939

運算符號

運算法則

與(&)

兩個 位都為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...