位運算總結之GGBond版

2021-10-10 08:23:54 字數 1191 閱讀 8838

按位與運算子(&)是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0 。參與運算的數以補碼方式出現。

例如:3&2可寫算式如下:00000011(3的二進位制補碼)&00000010(2的二進位制補碼)=00000010(2的二進位制補碼),可見3&2=2 。

int

main()

輸出結果:2

按位或運算子(|)是雙目運算子。其功能是參與運算的兩數各對應的二進位相或。只有對應的兩個二進位有乙個為1時,結果位就為1,否則為0 。參與運算的數以補碼方式出現。

例如:3|2=00000011|00000010=00000011=3

int

main()

輸出結果:3

按位異或運算子(^)是雙目運算子。其功能是參與運算的兩數各對應的二進位相異或。只有對應的兩個二進位相異是,結果位就為1,否則為0 。參與運算的數以補碼方式出現。

例如:3^2=00000011 ^ 00000010=00000001=1

int

main()

輸出結果:1

按位異或運算子(~)是單目運算子,具有右結合性(即表示式從右往左進行)。其功能是參與運算的數的各二進位按位求反。參與運算的數以補碼方式出現。

例如:~ 9 =~ (00001001)=(11110110)

需要注意的是最後出現的數是補碼的形式出現的,所以上例中11110110的原碼為10001010=-10

int

main()

輸出結果:-10 左移運算子(<<)是雙目運算子。其功能是參與運算的數的各二進位全部左移若干位,高位捨棄,低位補0。

例如:1<<2=00000001<<2=00000100=4

int

main()

輸出結果:4 右移運算子(>>)是雙目運算子。其功能是參與運算的數的各二進位全部右移若干位,低位捨棄,高位補0 。對於負數來說,符號位的1不動。

例如:8>>2=00001000>>2=00000010=2

-8>>2=10001000>>2=10000010=-2

int

main()

輸出結果: 2-2

二分查詢法之GGBond版

題目 利用二分查詢法,查詢乙個有序整數陣列中的目標值的下標。二分查詢法又稱折半查詢法,是一種在有序整數陣列中查詢目的元素的一種方法。1.找到左值head和右值end 2.中值middle head end 2 3.如果中值等於目標值則直接輸出答案,否則判斷目標值在左域還是右域 因為是有序陣列,所以通...

位運算總結 之 與

1 判斷奇偶 乙個數二進位制的末位數是1,則該數是奇數,末位數是0,則該數是偶數。因此可以用 a 1 0來判斷。如下例 include using namespace std int main cout endl return 0 2 消除尾一 消除最後出現的1 x x 1 如 用 o 1 時間檢測...

四大排序演算法之GGBond版

1.氣泡排序 2.選擇排序 3.插入排序 4.快速排序 總結上了大學後,發現排序演算法隨處可見,只要是考c語言的,總會讓你寫幾個排序演算法。為了加深我的記憶以及對排序演算法的理解,我整理了4種最容易理解的排序演算法 個人理解 排序演算法就是為任意長度的陣列由小到大排序 或者由大到小 的一種方法。交換...