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
Guards
- 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. 
Guards
  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 Plataformatec
Licensed under the Apache License, Version 2.0.
    https://hexdocs.pm/elixir/1.8.2/Bitwise.html