方法一:利用位運算交換兩個數
a = a ^ b;
b = a ^ b;
//右邊等價於a^b^b=a
a = a ^ b;
//此時b=a; 此式右邊等於a^b^a=b
方法二:
需要考慮a+b會不會超過a表達的數值範圍,導致記憶體溢位
a=a+b;
b=a-b;
// 右邊等價於a+b-b=a
a=a-b;
//此時b等於a,右邊等價於a+b-a=b
integer.max_value
十進位制:2147483647
二進位制:1111111 11111111 11111111 11111111
2 的冪次方,有乙個特點是,最高位為1,地位全為0,因而2 的次冪滿足(n &(n-1)) ==0
0x55555555
二進位制:01010101 01010101 01010101 01010101
特點:二進位制中,奇數項全為1,偶數項全為0;
用法:可以求4的次冪,4的次冪的特點是,自由最高位的奇數項為1,因此只要是4的次冪,則滿足(n & 0x55555555) == n
位運算的一些總結和技巧
引子 程式設計師面試寶典 2c的p37的面試例題中有這樣一道題 unsigned chara oxa5 unsigned charb a 4 printf d b 書上給的答案是正確的,但是講解是錯誤的 的優先順序高於 這個題作者之所以能夠歪打正著的作對最後的結果,是因為在位運算中,不存8位的位運算...
一些位運算
該篇文章會持續更新將遇到的位運算在這進行解釋 1.按位與 運算 運算規則 0 0 0 0 1 0 1 0 0 1 1 1 例如 8的二進位制 00001000 5的二進位制 00000101 8 5 0000 0000 轉換成十進位制就是0 與運算 的特殊用途 1 清零。如果想將乙個單元清零,即使其...
c 中位運算的一些總結
倘如我們要算a ba b ab,平常只能想到跑乙個for迴圈,乙個乙個的累乘。然而我們可以利用二進位制的思想將b拆開。例 b為11,可拆成 23 21 20 2 3 2 1 2 0 23 21 20 這樣a ba b ab就等於a23 a21 a20 a a a a23 a2 1 a2 0然後我們可...