On this page
Bitwise
A set of functions that perform calculations on bits.
All bitwise functions work only on integers; otherwise an ArithmeticError
is raised. The functions band/2
, bor/2
, bsl/2
, and bsr/2
also have operators, respectively: &&&/2
, |||/2
, <<</2
, and >>>/2
.
Guards
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.
Guards
- left &&& right
-
Bitwise AND operator.
- left <<< right
-
Arithmetic left bitshift operator.
- left >>> right
-
Arithmetic right bitshift operator.
- band(left, right)
-
Calculates the bitwise AND of its arguments.
- bnot(expr)
-
Calculates the bitwise NOT of the 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
-
Bitwise OR operator.
left &&& rightSource
@spec integer() &&& integer() :: integer()
Bitwise AND operator.
Calculates the bitwise AND of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> 9 &&& 3
1
left <<< rightSource
@spec integer() <<< integer() :: integer()
Arithmetic left bitshift 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
left >>> rightSource
@spec integer() >>> integer() :: integer()
Arithmetic right bitshift 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
band(left, right)Source
@spec band(integer(), integer()) :: integer()
Calculates the bitwise AND of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> band(9, 3)
1
bnot(expr)Source
@spec bnot(integer()) :: integer()
Calculates the bitwise NOT of the argument.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> bnot(2)
-3
iex> bnot(2) &&& 3
1
bor(left, right)Source
@spec bor(integer(), integer()) :: integer()
Calculates the bitwise OR of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> bor(9, 3)
11
bsl(left, right)Source
@spec bsl(integer(), integer()) :: integer()
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
bsr(left, right)Source
@spec bsr(integer(), integer()) :: integer()
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
bxor(left, right)Source
@spec bxor(integer(), integer()) :: integer()
Calculates the bitwise XOR of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> bxor(9, 3)
10
left ||| rightSource
@spec integer() ||| integer() :: integer()
Bitwise OR operator.
Calculates the bitwise OR of its arguments.
Allowed in guard tests. Inlined by the compiler.
Examples
iex> 9 ||| 3
11
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.15.4/Bitwise.html