檢視原始碼 Bitwise (Elixir v1.16.2)

一組針對位元執行計算的函式。

所有位元函式僅對整數運作;否則會引發 ArithmeticError。函式 band/2bor/2bsl/2bsr/2 也有各自的運算子:&&&/2|||/2<<</2>>>/2

防護

所有位元函式都可以在防護中使用

iex> odd? = fn
...>   int when Bitwise.band(int, 1) == 1 -> true
...>   _ -> false
...> end
iex> odd?.(1)
true

此模組中的所有函式都由編譯器內聯。

摘要

防護

位元 AND 運算子。

算術左位元移位運算子。

算術右位元移位運算子。

計算其引數的位元 AND。

計算引數的位元 NOT。

計算其引數的位元 OR。

計算算術左位元移位的結果。

計算算術右位元移位的結果。

計算其引數的位元 XOR。

位元 OR 運算子。

防護

@spec integer() &&& integer() :: integer()

位元 AND 運算子。

計算其引數的位元 AND。

允許在防護測試中使用。由編譯器內聯。

範例

iex> 9 &&& 3
1
@spec integer() <<< integer() :: integer()

算術左位元移位運算子。

計算算術左位元移位的結果。

允許在防護測試中使用。由編譯器內聯。

範例

iex> 1 <<< 2
4

iex> 1 <<< -2
0

iex> -1 <<< 2
-4

iex> -1 <<< -2
-1
@spec integer() >>> integer() :: integer()

算術右位元移位運算子。

計算算術右位元移位的結果。

允許在防護測試中使用。由編譯器內聯。

範例

iex> 1 >>> 2
0

iex> 1 >>> -2
4

iex> -1 >>> 2
-1

iex> -1 >>> -2
-4
@spec band(integer(), integer()) :: integer()

計算其引數的位元 AND。

允許在防護測試中使用。由編譯器內聯。

範例

iex> band(9, 3)
1
@spec bnot(integer()) :: integer()

計算引數的位元 NOT。

允許在防護測試中使用。由編譯器內聯。

範例

iex> bnot(2)
-3

iex> bnot(2) &&& 3
1
@spec bor(integer(), integer()) :: integer()

計算其引數的位元 OR。

允許在防護測試中使用。由編譯器內聯。

範例

iex> bor(9, 3)
11
@spec bsl(integer(), integer()) :: integer()

計算算術左位元移位的結果。

允許在防護測試中使用。由編譯器內聯。

範例

iex> bsl(1, 2)
4

iex> bsl(1, -2)
0

iex> bsl(-1, 2)
-4

iex> bsl(-1, -2)
-1
@spec bsr(integer(), integer()) :: integer()

計算算術右位元移位的結果。

允許在防護測試中使用。由編譯器內聯。

範例

iex> bsr(1, 2)
0

iex> bsr(1, -2)
4

iex> bsr(-1, 2)
-1

iex> bsr(-1, -2)
-4
@spec bxor(integer(), integer()) :: integer()

計算其引數的位元 XOR。

允許在防護測試中使用。由編譯器內聯。

範例

iex> bxor(9, 3)
10
@spec integer() ||| integer() :: integer()

位元 OR 運算子。

計算其引數的位元 OR。

允許在防護測試中使用。由編譯器內聯。

範例

iex> 9 ||| 3
11