Spec-Zone.ru › Elixir 1.14

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

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

Все битовые функции работают только с целыми числами; в противном случае генерируется исключение 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.14.1/Bitwise.html

Spec-Zone.ru

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