2. 與 ^
3. 異或&與^結合的奇妙例子
真正在公司中的實踐:nosql + rdbms 一起使用才是最強的,阿里巴巴的架構演進! 技術沒有高低之分,就看你如何去使用!(提公升內功,思維的提高!) 雲計算的長征之路:阿里雲的這群瘋子
無進製相加,滿**換律 結合律0^n == n n^n == 0
int a =16;
int b =61;
system.out.
println
("a交換前的值為:"
+a);
system.out.
println
("b交換前的值為:"
+b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
system.out.
println
("a交換後的值為:"
+a);
system.out.
println
("b交換後的值為:"
+b);
public
static
void
printoddtimesnum1
(int
arr)
system.out.
println
(eor)
;}
兩個位都為1時,結果才為1
int eor =10;
// ~eor 取反
int rightone = eor &
(~eor+1)
;//rightone = 2
// 10 -> 1010
//~10 -> 0101
//~10+1-> 0110
//10 & (~10+1) = 0010=2
public
static
intbit1counts
(int n)
return count;
}
// arr中,有兩種數,出現奇數次。假設兩數為a與b
public
static
void
printoddtimesnum2
(int
arr)
// a 和 b是兩種數
// eor != 0 因為a^b!=0
// eor最右側的1,提取出來
// eor : 00110010110111000
// rightone :00000000000001000
int rightone = eor &
(-eor+1)
;// 提取出最右的1
//此時,兩奇數a,b與其對應的偶數,已根據rightone分離開來
int onlyone =0;
for(
int i =
0; i < arr.length;i++)}
system.out.
println
("兩種出現奇數次的數分別為:"
+onlyone +
" "+
(eor ^ onlyone));
}
按位 與 或 與 異或 運算
規則 有0出0,全1為1 特殊用處 1 清零 如果想將乙個單元清零,即使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零。2 取乙個數中指定位 找乙個數,對應x要取的位,該數的對應位為1,其餘位為零,此數與x相與可以得到x中的指定位。3 x x 得到x的二進位制最右邊的1的位置i 從右...
異或,與,或運算
參加運算的兩個資料,按二進位制位進行 與 運算。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩位同時為 1 結果才為 1 否則為0 例如 3 5 即 0000 0011 0000 0101 0000 0001 因此,3 5的值得1。例如 9 5 即 0000 1001 9的二進位制...
異或 運算的妙用
現有1,1,2,2,3,3,n,n共2n個數,其中各個數字排列的順序是任意的,是雜亂放的,即沒有排序。現在刪除了其中的乙個數剩下了2n 1個數,求刪除的那個數?可能大多數人的第一想法是 用2n個數的總和 n n 1 減去2n 1個數的總和,不錯,想法是正確的。但是,放在計算機中考慮的話,此方法就不太...