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.
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.
Bitwise AND operator.
Arithmetic left bitshift operator.
Arithmetic right bitshift operator.
Calculates the bitwise AND of its arguments.
Calculates the bitwise NOT of the 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.
Bitwise OR operator.
@spec integer() &&& integer() :: integer()
Bitwise AND operator.
Calculates the bitwise AND of its arguments.
Allowed in guard tests. Inlined by the compiler.
iex> 9 &&& 3 1
@spec integer() <<< integer() :: integer()
Arithmetic left bitshift operator.
Calculates the result of an arithmetic left bitshift.
Allowed in guard tests. Inlined by the compiler.
iex> 1 <<< 2 4 iex> 1 <<< -2 0 iex> -1 <<< 2 -4 iex> -1 <<< -2 -1
@spec integer() >>> integer() :: integer()
Arithmetic right bitshift operator.
Calculates the result of an arithmetic right bitshift.
Allowed in guard tests. Inlined by the compiler.
iex> 1 >>> 2 0 iex> 1 >>> -2 4 iex> -1 >>> 2 -1 iex> -1 >>> -2 -4
@spec band(integer(), integer()) :: integer()
Calculates the bitwise AND of its arguments.
Allowed in guard tests. Inlined by the compiler.
iex> band(9, 3) 1
@spec bnot(integer()) :: integer()
Calculates the bitwise NOT of the argument.
Allowed in guard tests. Inlined by the compiler.
iex> bnot(2) -3 iex> bnot(2) &&& 3 1
@spec bor(integer(), integer()) :: integer()
Calculates the bitwise OR of its arguments.
Allowed in guard tests. Inlined by the compiler.
iex> bor(9, 3) 11
@spec bsl(integer(), integer()) :: integer()
Calculates the result of an arithmetic left bitshift.
Allowed in guard tests. Inlined by the compiler.
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()
Calculates the result of an arithmetic right bitshift.
Allowed in guard tests. Inlined by the compiler.
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()
Calculates the bitwise XOR of its arguments.
Allowed in guard tests. Inlined by the compiler.
iex> bxor(9, 3) 10
@spec integer() ||| integer() :: integer()
Bitwise OR operator.
Calculates the bitwise OR of its arguments.
Allowed in guard tests. Inlined by the compiler.
iex> 9 ||| 3 11
© 2012-2024 The Elixir Team
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.18.1/Bitwise.html