Bitwise
Набор функций, выполняющих вычисления над битами.
Все битовые функции работают только с целыми числами; в противном случае генерируется ArithmeticError. У функций band/2, bor/2, bsl/2 и bsr/2 также есть операторы соответственно: &&&/2, |||/2, <<</2 и >>>/2.
Условные выражения
Все битовые функции могут быть использованы в условных выражениях:
iex> odd? = fn ...> int when Bitwise.band(int, 1) == 1 -> true ...> _ -> false ...> end iex> odd?.(1) true
Все функции в этом модуле встроены компилятором.
Условные выражения
- left &&& right
Оператор побитового И.
- left <<< right
Оператор сдвига битов влево.
- left >>> right
Оператор сдвига битов вправо.
- band(left, right)
Вычисляет побитовое И своих аргументов.
- bnot(expr)
Вычисляет побитовое НЕ аргумента.
- bor(left, right)
Вычисляет побитовое ИЛИ своих аргументов.
- bsl(left, right)
Вычисляет результат сдвига битов влево.
- bsr(left, right)
Вычисляет результат сдвига битов вправо.
- bxor(left, right)
Вычисляет побитовое исключающее ИЛИ своих аргументов.
- left ||| right
Оператор побитового ИЛИ.
left &&& rightSource
@spec integer() &&& integer() :: integer()
Оператор поразрядной конъюнкции.
Вычисляет поразрядную конъюнкцию своих аргументов.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
iex> 9 &&& 3 1
left <<< rightSource
@spec integer() <<< integer() :: integer()
Оператор сдвига влево.
Вычисляет результат сдвига влево.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
iex> 1 <<< 2 4 iex> 1 <<< -2 0 iex> -1 <<< 2 -4 iex> -1 <<< -2 -1
left >>> rightSource
@spec integer() >>> integer() :: integer()
Оператор сдвига вправо.
Вычисляет результат сдвига вправо.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
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()
Вычисляет поразрядную конъюнкцию своих аргументов.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
iex> band(9, 3) 1
bnot(expr)Source
@spec bnot(integer()) :: integer()
Вычисляет поразрядное отрицание аргумента.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
iex> bnot(2) -3 iex> bnot(2) &&& 3 1
bor(left, right)Source
@spec bor(integer(), integer()) :: integer()
Вычисляет поразрядное дизъюнкцию своих аргументов.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
iex> bor(9, 3) 11
bsl(left, right)Source
@spec bsl(integer(), integer()) :: integer()
Вычисляет результат сдвига влево.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
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()
Вычисляет результат сдвига вправо.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
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()
Вычисляет поразрядное исключающее ИЛИ своих аргументов.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
iex> bxor(9, 3) 10
left ||| rightSource
@spec integer() ||| integer() :: integer()
Оператор поразрядного дизъюнкции.
Вычисляет поразрядное дизъюнкцию своих аргументов.
Допускается в тестах стражей. Компилятор выполняет встраивание.
Примеры
iex> 9 ||| 3 11
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.15.4/Bitwise.html