Before you can understand char, int, float, or size_t on the parent note, you need a small toolbox of ideas. This page builds every single one from nothing — no symbol used before it is drawn.
The picture: a single lightbulb. Dark = 0, lit = 1. That is the entire alphabet of a computer — just two symbols.
Why the topic needs it: every type (char, int, double) is measured in bits and bytes. If "bit" is fuzzy, "8 bits" and "how many patterns fit" stay fuzzy too.
The picture: the same branching tree — n is simply how many rows of forks you drew.
Why the topic needs it: ranges like [0,2n−1] and [−2n−1,2n−1−1] are written with exponents. You must read 2n−1 as "one row of forks fewer than 2n", i.e. half as many patterns.
The picture: a number line with a solid dot on a, a solid dot on b, and the whole stretch between them coloured in.
Why the topic needs it: every range in the parent — signed char[−128,127], unsigned char[0,255] — is written this way. If you misread the bracket you miscount by one at each end (the classic off-by-one bug).
Here the same 256 patterns get two different meanings. This is the heart of the parent's integer section.
Unsigned: we agree every pattern names a non-negative count. Pattern 00000000 = 0, up to 11111111 = 255. Zero eats one slot, so the top value is 2n−1, one less than the count.
Signed (two's complement): we sacrifice the top bit's usual meaning and give it a negative weight, so patterns starting with 1 name negatives.
The picture: a ring (odometer) of the 256 byte patterns. On the unsigned ring the labels run 0…255. On the signed ring the top half is relabelled to negatives: after 127 it flips to −128 and climbs back to −1. Same switches, different labels.
This is the two's-complement idea explored fully in Two's Complement Representation, and the wrap-around at the ring's seam is Integer Overflow and Undefined Behaviour.
Why the topic needs it: the parent's worked example (char c = 200 becoming -56) is exactly walking from the unsigned label to the signed label of the same pattern.
Integers count in equal steps. But to store both an atom's size and a galaxy's size, you can't step evenly — you'd need billions of bits. Instead you store the number the way scientists write it.
The picture: a slider. The digits fix the shape of the number; the exponent slides the decimal point left (small) or right (huge). A few digits + a wide slider covers an enormous range.
Why the topic needs it: IEEE-754 float/double are binary scientific notation — a sign, a mantissa (the digits), and an exponent (the scale). This is the whole of IEEE-754 Floating Point.
The picture: a ruler that only reads 0 upward (no negative marks) and is long enough to measure the biggest array the machine could ever hold.
Why the topic needs it: the parent's countdown-loop bug (size_t i; i >= 0) only makes sense once you know size_t is unsigned — its odometer can never dip below 0, so it wraps to a giant number instead.