感覺位運算操作符雖然在平時用得並不多,但是在涉及到底層效能優化或者使用某些trick的時候還是比較有意思。& 位運算 and
| 位運算 or
^ 位運算 xor
&^ 位清空 (and not)
<< 左移
>> 右移
&(and) |(or) 就不提了最常用的東西 會程式設計就會。
&操作的話是當 兩個數需要同時為1的時候才會保留。 例如 0000 0100 & 0000 1111 => 0000 0100 => 4
| 操作的話是當 兩個數同時為1或者1個為1乙個不為1的時候會保留。 例如 0000 0100 | 0000 1111 => 0000 1111 => 15
^(xor) 在go語言中xor是作為二元運算子存在的:
但是如果是作為一元運算子出現,他的意思是按位取反,例如
package mainimport
"fmt
"func main()
output: -5
如果作為二元運算子則是
package mainimport
"fmt
"func main()
output: 6
xor是不進製加法計算,也就是異或計算。0000 0100 + 0000 0010 = 0000 0110 = 6
&^ (and not)位清空運算和被運算變數位置有關係,先看乙個例子:
package mainimport
"fmt
"func main()
output: 2
計算x&^y 首先我們先換算成2進製 0000 0010 &^ 0000 0100 = 0000 0010 如果ybit位上的數是0則取x上對應位置的值, 如果ybit位上為1則取結果位上取0
>>右移 《左移 感覺右移左移應該也是非常常見的使用了 繼續看例子:
package mainimport
"fmt
"func main()
output:4 2
進行轉化為二進位制 然後向左或者向右移動。
位運算操作符
與運算,二元操作符,對兩個操作員的每個二進位制位進行與運算,運算規則為 1 1 1 1 0 0 0 1 0 0 0 0 異或運算,二元操作符,對兩個操作員的每個二進位制位進行異或運算,運算規則為 1 1 0 1 0 1 0 1 1 0 0 0 或運算,二元操作符,對兩個操作員的每個二進位制位或運算,...
位運算子 操作符
按位與 按位或 取反 按位異或 按位異或可以實現兩個變數值的交換,但是並不推薦。a b b a a b 都是雙目運算子,將二進位制向左移動指定位,高位丟棄,低位補0.當為負數時,根據編譯系統的規定補0,或者1.例 0x01 2 3 這裡要考慮運算子的優先順序。的優先順序大於 的優先順序,所以0x01...
位運算操作符詳解二
位運算是指進行二進位制的運算。在系統軟體中,常需要處理二進位制位的問題。例如,將乙個儲存單元中的各二進位制位左移或右移一位,兩個數按位相加等。c語言提供位運算的功能。運算子 含義 按位與 按位或 按位異或 取反 左移 右移 說明 位運算子中,除了 取反以外,均為二目 元 運算子,即要求兩側各有乙個運...