## TL;DR

In the previous post, we explained how to use maps in Elixir. Today we discuss how Elixir handles fundamental computer datatype, binaries. This post is part of the functional language series, and it is based on the remarkable book Elixir In Action by Sasa Juric.

## Binaries

Every program must be translated into a stream of zeros and ones because the processor only understands two states (currency levels). Stream of zeros and ones is better known as binary data. For example, number five in binary data is:

5 = 101.

We need three binary digits to represent number five. You can read more about binaries in our previous post, Binary Numbers and Binary Numbers Arithmetic.

Elixir is using special operators for representing binaries: `<< >>`

. We can use numbers from `-255`

to `255`

because each number represents a `byte`

and `byte`

has `eight bits`

.

`255 = 1 1 1 1 1 1 1 1`

In the picture above, we first defined three binary number of two `bytes`

.

When we try to use a number higher than `255`

, Elixir automatically subtracts `256`

from that number without any error. Be aware of that because this could be a source of `software errors`

.

We can also use `-1`

. In this case, `256`

is automatically added.

It is also possible to override `size of one byte`

for each number separately.

## Remember

- what is a binary type of
- how to represent binary using
`<<>>`

- the default number of bytes and how to set a number of byte