Bitwise
Bitwise
A set of macros that perform calculations on bits.
The macros 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 macros can be used in guards:
iex> use Bitwise
iex> odd? = fn int when band(int, 1) == 1 -> true; _ -> false end
iex> odd?.(1)
true
Summary
Functions
- left &&& right
-
Infix operator; calculates the bitwise AND of its arguments
- left <<< right
-
Infix operator; calculates the result of an arithmetic left bitshift
- left >>> right
-
Infix operator; calculates the result of an arithmetic right bitshift
- left ^^^ right
-
Infix operator; calculates the bitwise XOR of its arguments
- band(left, right)
-
Calculates the bitwise AND of its arguments
- bnot(expr)
-
Calculates the bitwise NOT of its argument
- bor(left, right)
-
Calculates the bitwise OR of its arguments
- bsl(left, right)
-
Calculates the result of an arithmetic left bitshift
- bsr(left, right)
-
Calculates the result of an arithmetic right bitshift
- bxor(left, right)
-
Calculates the bitwise XOR of its arguments
- left ||| right
-
Infix operator; calculates the bitwise OR of its arguments
- ~~~expr
-
Prefix (unary) operator; calculates the bitwise NOT of its argument
Functions
left &&& right (macro)
Infix operator; calculates the bitwise AND of its arguments.
iex> 9 &&& 3
1
left <<< right (macro)
Infix operator; calculates the result of an arithmetic left bitshift.
iex> 1 <<< 2
4
iex> 1 <<< -2
0
iex> -1 <<< 2
-4
iex> -1 <<< -2
-1
left >>> right (macro)
Infix operator; calculates the result of an arithmetic right bitshift.
iex> 1 >>> 2
0
iex> 1 >>> -2
4
iex> -1 >>> 2
-1
iex> -1 >>> -2
-4
left ^^^ right (macro)
Infix operator; calculates the bitwise XOR of its arguments.
iex> 9 ^^^ 3
10
band(left, right) (macro)
Calculates the bitwise AND of its arguments.
iex> band(9, 3)
1
bnot(expr) (macro)
Calculates the bitwise NOT of its argument.
iex> bnot(2)
-3
iex> bnot(2) &&& 3
1
bor(left, right) (macro)
Calculates the bitwise OR of its arguments.
iex> bor(9, 3)
11
bsl(left, right) (macro)
Calculates the result of an arithmetic left bitshift.
iex> bsl(1, 2)
4
iex> bsl(1, -2)
0
iex> bsl(-1, 2)
-4
iex> bsl(-1, -2)
-1
bsr(left, right) (macro)
Calculates the result of an arithmetic right bitshift.
iex> bsr(1, 2)
0
iex> bsr(1, -2)
4
iex> bsr(-1, 2)
-1
iex> bsr(-1, -2)
-4
bxor(left, right) (macro)
Calculates the bitwise XOR of its arguments.
iex> bxor(9, 3)
10
left ||| right (macro)
Infix operator; calculates the bitwise OR of its arguments.
iex> 9 ||| 3
11
~~~expr (macro)
Prefix (unary) operator; calculates the bitwise NOT of its argument.
iex> ~~~2
-3
iex> ~~~2 &&& 3
1
© 2012–2017 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.4.5/Bitwise.html