View Source Bitwise (Elixir v1.10.0)
A set of functions that perform calculations on bits.
All bitwise functions work only on integers; otherwise an
ArithmeticError
is raised.
The functions in this module come in two flavors: named or operators. For example:
iex> use Bitwise
iex> bnot(1) # named
-2
iex> 1 &&& 1 # operator
1
If you prefer to use only operators or skip them, you can pass the following options:
:only_operators
- includes only operators:skip_operators
- skips operators
For example:
iex> use Bitwise, only_operators: true
iex> 1 &&& 1
1
When invoked with no options, use Bitwise
is equivalent
to import Bitwise
.
All bitwise functions can be used in guards:
iex> odd? = fn
...> int when Bitwise.band(int, 1) == 1 -> true
...> _ -> false
...> end
iex> odd?.(1)
true
All functions in this module are inlined by the compiler.
Link to this section Summary
Guards
Infix operator; calculates the bitwise AND of its arguments.
Infix operator; calculates the result of an arithmetic left bitshift.
Infix operator; calculates the result of an arithmetic right bitshift.
Calculates the bitwise AND of its arguments.
Calculates the bitwise NOT of its argument.
Calculates the bitwise OR of its arguments.
Calculates the result of an arithmetic left bitshift.
Calculates the result of an arithmetic right bitshift.
Calculates the bitwise XOR of its arguments.
Infix operator; calculates the bitwise XOR of its arguments.
Infix operator; calculates the bitwise OR of its arguments.
Prefix (unary) operator; calculates the bitwise NOT of its argument.
Link to this section Guards
Infix operator; calculates the bitwise AND of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> 9 &&& 3
1
Infix operator; calculates the result of an arithmetic left bitshift.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> 1 <<< 2
4
iex> 1 <<< -2
0
iex> -1 <<< 2
-4
iex> -1 <<< -2
-1
Infix operator; calculates the result of an arithmetic right bitshift.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> 1 >>> 2
0
iex> 1 >>> -2
4
iex> -1 >>> 2
-1
iex> -1 >>> -2
-4
Calculates the bitwise AND of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> band(9, 3)
1
Calculates the bitwise NOT of its argument.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> bnot(2)
-3
iex> bnot(2) &&& 3
1
Calculates the bitwise OR of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> bor(9, 3)
11
Calculates the result of an arithmetic left bitshift.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> bsl(1, 2)
4
iex> bsl(1, -2)
0
iex> bsl(-1, 2)
-4
iex> bsl(-1, -2)
-1
Calculates the result of an arithmetic right bitshift.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> bsr(1, 2)
0
iex> bsr(1, -2)
4
iex> bsr(-1, 2)
-1
iex> bsr(-1, -2)
-4
Calculates the bitwise XOR of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> bxor(9, 3)
10
Infix operator; calculates the bitwise XOR of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> 9 ^^^ 3
10
Infix operator; calculates the bitwise OR of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> 9 ||| 3
11
Prefix (unary) operator; calculates the bitwise NOT of its argument.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> ~~~2
-3
iex> ~~~2 &&& 3
1