Golang的位運算操作符的使用

2021-09-07 07:58:06 字數 1188 閱讀 8774

&      位運算 and

| 位運算 or

^ 位運算 xor

&^ 位清空 (and not)

<< 左移

>> 右移

感覺位運算操作符雖然在平時用得並不多,但是在涉及到底層效能優化或者使用某些trick的時候還是比較有意思。

&(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 main

import

"fmt

"func main()

output: -5

如果作為二元運算子則是

package main

import

"fmt

"func main()

output: 6

xor是不進製加法計算,也就是異或計算。0000 0100 + 0000 0010 = 0000 0110 = 6

&^ (and not)位清空運算和被運算變數位置有關係,先看乙個例子:

package main

import

"fmt

"func main()

output: 2

計算x&^y 首先我們先換算成2進製  0000 0010 &^ 0000 0100 = 0000 0010 如果ybit位上的數是0則取x上對應位置的值, 如果ybit位上為1則取結果位上取0

>>右移 《左移 感覺右移左移應該也是非常常見的使用了 繼續看例子:

package main

import

"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語言提供位運算的功能。運算子 含義 按位與 按位或 按位異或 取反 左移 右移 說明 位運算子中,除了 取反以外,均為二目 元 運算子,即要求兩側各有乙個運...