FREE COURSE / REAL PRACTICE
Binary, hex & signed numbers
Make bits and bytes concrete: binary place values, hexadecimal, byte order, one’s complement and two’s complement.
What you’ll work toward
Convert and interpret representations, distinguish carry from overflow and reason about signed boundaries.
Read an explanation, inspect the diagrams and work through the available checks, debugging exercises and builds. Feedback and prerequisite links guide the next step.
Before you start
This course builds on these skills:
Individual lessons can add prerequisites. The course map shows your actual readiness.
A look inside the first lesson
Binary: bits, place values & unsigned words
#include <print>
int main() {
constexpr auto bits = 0b0010'1101;
std::println("{} {} {}", bits, bits == 45, 010);
}Your course outline
Follow the lessons in curriculum order. Open a unit to preview the ideas you’ll work with.
Binary & hex
- LESSON 01.01
Binary: bits, place values & unsigned words
Convert binary and decimal, distinguish a value from its spelling, and validate fixed-width unsigned words without overflowing or shifting by the type width.
Open lesson - LESSON 01.02
Hexadecimal: nibbles, bytes & byte order
Read and write hex bytes, convert four-bit groups, and decode explicit little- and big-endian values without confusing display order with memory order.
Open lesson
Signed encodings
- LESSON 02.01
One's complement: negative zero & end-around carry
Model one's-complement signed words explicitly: encode negatives by inverting within the width, preserve both zeros, and add with end-around carry.
Open lesson - LESSON 02.02
Two's complement: signed values, extension & overflow
Encode and decode two's-complement words, sign-extend them, and distinguish unsigned carry from signed overflow without executing C++ signed overflow.
Open lesson