位運算中的一些技巧

2021-09-29 12:17:44 字數 763 閱讀 2917

方法一:利用位運算交換兩個數

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然後我們可...