Spec-Zone.ru › Elixir 1.8

Побитовые операции

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

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

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

Инфиксный оператор; вычисляет побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ своих аргументов.

band(left, right)

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

bnot(expr)

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

bor(left, right)

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

bsl(left, right)

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

bsr(left, right)

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

bxor(left, right)

Вычисляет побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ своих аргументов.

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

(макрос)

Инфиксный оператор; вычисляет побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ своих аргументов.

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)

(макрос)

Вычисляет побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ своих аргументов.

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.8.2/Bitwise.html

Spec-Zone.ru

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