Spec-Zone.ru › Elixir 1.5

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

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

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

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 эквивалентно %%%CODE_BLOCK_5%%.

Все побитовые макросы могут использоваться в защитах:

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

Spec-Zone.ru

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