Most computers are byte-addressable: every 8-bit byte has its own address, even when the processor works with 32-bit or 64-bit words.
With 32-bit (4-byte) words:
- each word occupies 4 consecutive byte addresses
- word 0 is at bytes 0–3, word 1 at bytes 4–7, and so on
- word i starts at byte address 4i
In binary, multiplying by 4 is shifting left two places. So the low two bits of a word's starting address are 00, and the bits above them are the word number. An address whose low two bits are 00 is aligned.
Going the other way, any byte address splits into two fields:
- drop the low 2 bits → the word number
- the low 2 bits → which byte within the word (0–3)
Counting address bits: a byte-addressable memory of 2ᵏ bytes needs k address bits. Here log₂ of the bytes is correct, because each address holds exactly one byte. In a ×16 or ×32 memory where each address holds a whole word, you'd use log₂ of the words instead.