Bitwise

Bitwise

A set of macros that perform calculations on bits.

The macros in this module come in two flavors: named or operators. For example:

iex> use Bitwise
iex> bnot 1   # named
-2
iex> 1 &&& 1  # operator
1

If you prefer to use only operators or skip them, you can pass the following options:

  • :only_operators - include only operators
  • :skip_operators - skip operators

For example:

iex> use Bitwise, only_operators: true
iex> 1 &&& 1
1

When invoked with no options, use Bitwise is equivalent to import Bitwise.

All bitwise macros can be used in guards:

iex> use Bitwise
iex> odd? = fn int when band(int, 1) == 1 -> true; _ -> false end
iex> odd?.(1)
true

Summary

Macros

left &&& right

Infix operator; calculates the bitwise AND of its arguments

left <<< right

Infix operator; calculates the result of an arithmetic left bitshift

left >>> right

Infix operator; calculates the result of an arithmetic right bitshift

left ^^^ right

Infix operator; calculates the bitwise XOR of its arguments

band(left, right)

Calculates the bitwise AND of its arguments

bnot(expr)

Calculates the bitwise NOT of its argument

bor(left, right)

Calculates the bitwise OR of its arguments

bsl(left, right)

Calculates the result of an arithmetic left bitshift

bsr(left, right)

Calculates the result of an arithmetic right bitshift

bxor(left, right)

Calculates the bitwise XOR of its arguments

left ||| right

Infix operator; calculates the bitwise OR of its arguments

~~~expr

Prefix (unary) operator; calculates the bitwise NOT of its argument

Macros

left &&& right

Infix operator; calculates the bitwise AND of its arguments.

iex> 9 &&& 3
1

left <<< right

Infix operator; calculates the result of an arithmetic left bitshift.

iex> 1 <<< 2
4
iex> 1 <<< -2
0
iex> -1 <<< 2
-4
iex> -1 <<< -2
-1

left >>> right

Infix operator; calculates the result of an arithmetic right bitshift.

iex> 1 >>> 2
0
iex> 1 >>> -2
4
iex> -1 >>> 2
-1
iex> -1 >>> -2
-4

left ^^^ right

Infix operator; calculates the bitwise XOR of its arguments.

iex> 9 ^^^ 3
10

band(left, right)

Calculates the bitwise AND of its arguments.

iex> band(9, 3)
1

bnot(expr)

Calculates the bitwise NOT of its argument.

iex> bnot(2)
-3
iex> bnot(2) &&& 3
1

bor(left, right)

Calculates the bitwise OR of its arguments.

iex> bor(9, 3)
11

bsl(left, right)

Calculates the result of an arithmetic left bitshift.

iex> bsl(1, 2)
4
iex> bsl(1, -2)
0
iex> bsl(-1, 2)
-4
iex> bsl(-1, -2)
-1

bsr(left, right)

Calculates the result of an arithmetic right bitshift.

iex> bsr(1, 2)
0
iex> bsr(1, -2)
4
iex> bsr(-1, 2)
-1
iex> bsr(-1, -2)
-4

bxor(left, right)

Calculates the bitwise XOR of its arguments.

iex> bxor(9, 3)
10

left ||| right

Infix operator; calculates the bitwise OR of its arguments.

iex> 9 ||| 3
11

~~~expr

Prefix (unary) operator; calculates the bitwise NOT of its argument.

iex> ~~~2
-3
iex> ~~~2 &&& 3
1

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

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部