C 位運算總結

2021-10-06 06:54:20 字數 1062 閱讀 8602

位運算的運算物件只能是整型或者字元型資料。

c++ 的位運算子:

c++中的移位運算:

移位運算是指將二進位制資訊串作為整體移動。

leetcode上位運算的幾道例題

1、位異或運算

異或運算: 相同為0,不同為1。將陣列中的所有元素求異或和,對於相同的元素,異或的結果為0。因此,陣列中成對出現的元素異或和為0,所有元素的異或和即為只出現一次的元素。

class

solution

return ans;}}

;

2、位異或運算2乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o(n),空間複雜度是o(1)。

分析:有了例題1的經驗,我們可以想到:如果將整型陣列nums分為兩個組,分組滿足

那麼,只需要對這兩個組分別做一次異或和運算,得到的結果就是兩個只出現一次的數字。

關鍵來了,如何進行分組呢?

**取整型陣列異或和為1的那一位,為1的分為一組,為0的分為一組,是否滿足上面兩個條件: **

**實現如下:

class

solution

// 找到異或和結果中為1的那一位

int div =1;

while

((ans & div)==0

) div = div <<1;

// 分組

int a =

0, b =0;

for(

int i =

0; i < nums.

size()

; i++

)else

}return vector<

int>;}

};

C 位運算總結

位運算應用口訣 清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 要點 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 左移 右邊空出的位上補0,左邊的位將從字頭擠掉,其值相當於乘2。3 右移 右邊的位被擠掉。對於左邊移出的空位,如果是正數則空位補0,若為負數...

C 位運算總結(一)

主要講解c 的位運算和位運算的作用。表示按位與 1 1 1 1 0 0 0 1 0 0 0 0用處 保留某一位,用於判斷對應位資料是否為1。int a 0x00101101 判斷低三位是否為1 if a 0x100 0x100 使用0x0f來與乙個整數進行 運算,來獲取該整數的最低4個bit位。in...

位運算總結

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...