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!
get the zine!
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