ASCII control characters and how to read the table
What the non-printing codes 0 to 31 and 127 do, why ASCII splits into control and printable ranges, and how the number bases line up.
The two halves of the table
ASCII divides neatly into non-printing and printing ranges. Codes 0 through 31, together with 127, are control characters that carry no glyph and were designed to command devices rather than show text. Codes 32 through 126 are the printable set: the space, digits, uppercase and lowercase letters, and punctuation you can actually see on screen. Knowing which half a code falls in tells you at a glance whether it represents visible text or a hidden instruction, and the table marks every control code so the split is obvious.
What the control codes were for
The control block dates from the teleprinter era, when a byte might ring a bell, advance the paper or mark the end of a message. Several survive in everyday computing: horizontal tab (9) still indents, line feed (10) and carriage return (13) still end lines, and NUL (0) terminates strings in the C language. Others such as the device-control pair XON and XOFF (17 and 19) once paced serial links, and the file, group, record and unit separators (28 to 31) structured data streams. Even the ones you rarely meet explain odd behaviour when they sneak into a text file.
Reading a code across four bases
Each row shows the same value in four number systems so you can drop it into any context. Decimal is the everyday count, hexadecimal packs the value into two compact digits, octal survives in older Unix tools and file permissions, and 8-bit binary shows the exact bit pattern. Take the letter A: decimal 65 is hex 41, octal 101 and binary 01000001, four faces of one number. Being able to move between them quickly is essential when you debug encodings, escape sequences or raw byte dumps.
Why ASCII still matters
Modern text is usually Unicode, yet ASCII remains its foundation because UTF-8 encodes the first 128 code points as single bytes identical to ASCII. That backward compatibility is why source code, protocols like HTTP, and config files lean on the ASCII range and stay portable across systems. When a stray control character breaks a CSV import or a filename, this table is the fastest way to identify the culprit by its code. Reaching for the printable, portable ASCII subset keeps data interchange predictable.