Битовые операции
Набор макросов, выполняющих вычисления над битами.
Макросы в этом модуле представлены в двух вариантах: именованные или операторные. Например:
iex> use Bitwise iex> bnot 1 # named -2 iex> 1 &&& 1 # operator 1
Если вы предпочитаете использовать только операторы или пропустить их, вы можете передать следующие опции:
-
:only_operators— включает только операторы -
:skip_operators— пропускает операторы
Например:
iex> use Bitwise, only_operators: true iex> 1 &&& 1 1
При вызове без опций, use Bitwise эквивалентно import Bitwise.
Все битовые макросы могут быть использованы в защитных конструкциях:
iex> use Bitwise iex> odd? = fn int when band(int, 1) == 1 -> true; _ -> false end iex> odd?.(1) true
Краткое описание
Функции
- left &&& right
-
Инфиксный оператор; вычисляет битовую конъюнкцию своих аргументов
- left <<< right
-
Инфиксный оператор; вычисляет результат арифметического сдвига влево на заданное число битов
- left >>> right
-
Инфиксный оператор; вычисляет результат арифметического сдвига вправо на заданное число битов
- left ^^^ right
-
Инфиксный оператор; вычисляет битовую операцию XOR над своими аргументами
- band(left, right)
-
Вычисляет битовую конъюнкцию своих аргументов
- bnot(expr)
-
Вычисляет битовую инверсию своего аргумента
- bor(left, right)
-
Вычисляет битовую дизъюнкцию своих аргументов
- bsl(left, right)
-
Вычисляет результат арифметического сдвига влево на заданное число битов
- bsr(left, right)
-
Вычисляет результат арифметического сдвига вправо на заданное число битов
- bxor(left, right)
-
Вычисляет битовую операцию XOR над своими аргументами
- left ||| right
-
Инфиксный оператор; вычисляет битовую дизъюнкцию своих аргументов
- ~~~expr
-
Префиксный (унарный) оператор; вычисляет битовую инверсию своего аргумента
Функции
left &&& right (макрос)
Инфиксный оператор; вычисляет битовую конъюнкцию своих аргументов.
iex> 9 &&& 3 1
left <<< right (макрос)
Инфиксный оператор; вычисляет результат арифметического сдвига влево.
iex> 1 <<< 2 4 iex> 1 <<< -2 0 iex> -1 <<< 2 -4 iex> -1 <<< -2 -1
left >>> right (макрос)
Инфиксный оператор; вычисляет результат арифметического сдвига вправо.
iex> 1 >>> 2 0 iex> 1 >>> -2 4 iex> -1 >>> 2 -1 iex> -1 >>> -2 -4
left ^^^ right (макрос)
Инфиксный оператор; вычисляет битовую операцию XOR над своими аргументами.
iex> 9 ^^^ 3 10
band(left, right) (макрос)
Вычисляет битовую конъюнкцию своих аргументов.
iex> band(9, 3) 1
bnot(expr) (макрос)
Вычисляет битовую инверсию своего аргумента.
iex> bnot(2) -3 iex> bnot(2) &&& 3 1
bor(left, right) (макрос)
Вычисляет битовую дизъюнкцию своих аргументов.
iex> bor(9, 3) 11
bsl(left, right) (макрос)
Вычисляет результат арифметического сдвига влево.
iex> bsl(1, 2) 4 iex> bsl(1, -2) 0 iex> bsl(-1, 2) -4 iex> bsl(-1, -2) -1
bsr(left, right) (макрос)
Вычисляет результат арифметического сдвига вправо.
iex> bsr(1, 2) 0 iex> bsr(1, -2) 4 iex> bsr(-1, 2) -1 iex> bsr(-1, -2) -4
bxor(left, right) (макрос)
Вычисляет битовую операцию XOR над своими аргументами.
iex> bxor(9, 3) 10
left ||| right (макрос)
Инфиксный оператор; вычисляет битовую дизъюнкцию своих аргументов.
iex> 9 ||| 3 11
~~~expr (макрос)
Префиксный (унарный) оператор; вычисляет битовую инверсию своего аргумента.
iex> ~~~2 -3 iex> ~~~2 &&& 3 1
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.4.5/Bitwise.html