Spec-Zone.ru › Elixir 1.15

Bitwise

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

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

Spec-Zone.ru

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