Spec-Zone.ru › Elixir 1.10

Битовые операции

Набор функций для выполнения вычислений над битами.

Все битовые функции работают только с целыми числами; в противном случае возбуждается исключение ArithmeticError.

Функции в этом модуле доступны в двух формах: с именами или в виде операторов. Например:

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> odd? = fn
...>   int when Bitwise.band(int, 1) == 1 -> true
...>   _ -> false
...> end
iex> odd?.(1)
true

Все функции в этом модуле инлайнят компилятор.

Краткое описание

Сторожа

left &&& right

Инфиксный оператор; вычисляет побитовое И своих аргументов.

left <<< right

Инфиксный оператор; вычисляет результат арифметического сдвига влево на несколько битов.

left >>> right

Инфиксный оператор; вычисляет результат арифметического сдвига вправо на несколько битов.

left ^^^ right

Инфиксный оператор; вычисляет побитовое исключающее ИЛИ своих аргументов.

left ||| right

Инфиксный оператор; вычисляет побитовое ИЛИ своих аргументов.

~~~expr

Префиксный (унарный) оператор; вычисляет побитовое НЕ своего аргумента.

band(left, right)

Вычисляет побитовое И своих аргументов.

bnot(expr)

Вычисляет побитовое НЕ своего аргумента.

bor(left, right)

Вычисляет побитовое ИЛИ своих аргументов.

bsl(left, right)

Вычисляет результат арифметического сдвига влево на несколько битов.

bsr(left, right)

Вычисляет результат арифметического сдвига вправо на несколько битов.

bxor(left, right)

Вычисляет побитовое исключающее ИЛИ своих аргументов.

Сторожа

left &&& right

Specs

integer() &&& integer() :: integer()

Инфиксный оператор; вычисляет побитовое И своих аргументов.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> 9 &&& 3
1

left <<< right

Specs

integer() <<< integer() :: integer()

Инфиксный оператор; вычисляет результат арифметического сдвига влево на несколько битов.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> 1 <<< 2
4

iex> 1 <<< -2
0

iex> -1 <<< 2
-4

iex> -1 <<< -2
-1

left >>> right

Specs

integer() >>> integer() :: integer()

Инфиксный оператор; вычисляет результат арифметического сдвига вправо на несколько битов.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> 1 >>> 2
0

iex> 1 >>> -2
4

iex> -1 >>> 2
-1

iex> -1 >>> -2
-4

left ^^^ right

Specs

integer() ^^^ integer() :: integer()

Инфиксный оператор; вычисляет побитовое исключающее ИЛИ своих аргументов.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> 9 ^^^ 3
10

left ||| right

Specs

integer() ||| integer() :: integer()

Инфиксный оператор; вычисляет побитовое ИЛИ своих аргументов.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> 9 ||| 3
11

~~~expr

Specs

~~~integer() :: integer()

Префиксный (унарный) оператор; вычисляет побитовое НЕ своего аргумента.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> ~~~2
-3

iex> ~~~2 &&& 3
1

band(left, right)

Specs

band(integer(), integer()) :: integer()

Вычисляет побитовое И своих аргументов.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> band(9, 3)
1

bnot(expr)

Specs

bnot(integer()) :: integer()

Вычисляет побитовое НЕ своего аргумента.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> bnot(2)
-3

iex> bnot(2) &&& 3
1

bor(left, right)

Specs

bor(integer(), integer()) :: integer()

Вычисляет побитовое ИЛИ своих аргументов.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> bor(9, 3)
11

bsl(left, right)

Specs

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)

Specs

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)

Specs

bxor(integer(), integer()) :: integer()

Вычисляет побитовое исключающее ИЛИ своих аргументов.

Разрешено в тестах сторожей. Инлайнится компилятором.

Примеры

iex> bxor(9, 3)
10

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.10.4/Bitwise.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API