Here's a preview from my zine, **How Integers and Floats Work**!
If you want to see more comics like this, sign up for my saturday comics newsletter or browse more comics!

## read the transcript!

## NaN and infinity

## NaN stands for “not a number”

It means the result of the calculation is undefined.

`0/0 = NaN`

`sqrt(-1) = NaN`

`log(-1) = NaN`

## infinity

“Infinity” just means “this number is too big for floating point to handle.” There are two infinities: one positive, one negative.

`2.0**1024 = inf`

(`2.0**1024`

means `2^1024`

)

`-1/0 = -inf`

`inf 10 = inf`

`inf - inf = NaN`

## NaNs spread

As soon as one NaN gets in, it gets everywhere

`NaN * 5 = NaN`

`NaN + 2 = NaN`

## NaN != NaN

NaN isn’t equal to anything (including itself)

## NaN and infinity: the bits

A floating point value is `NaN`

or `infinity`

if the bits in the exponent are all 1. For example, this is a `NaN`

:

`01111111 11110001 00000000 00000000 00000000 00000000 00000000 00000000`

It’s `infinity`

if the offset bits are all 0, otherwise it’s `NaN`

.

There are 2^52 values like this: 2 of them are `±infinity`

and the other 2^52-2 are `NaN`

.

We usually treat `NaN`

like a single value though.

## a note on byte order

All of the floating point examples in this zine use a big endian byte order, because it’s easier to read. But most computers use a little endian byte order.

You can see this in action at `https://memory-spy.wizardzines.com`