位運算的運算物件只能是整型或者字元型資料。
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,則該位...