Charles Petzold (2000), Code: The Hidden Language of Computer Hardware and Software (Redmond: Microsoft Press: 0-7356-1131-9)
Petzold takes a constructive approach to explaining how a computer works, starting with a relay, then showing how logic gates are made from relays, and then higher level devices - such as data latches - from gates. At first I thought that using relays in the construction was silly, but then realized that they are much easier to understand than transistors and so make the whole discussion more accessible. In fact, anyone can easily make a rudimentary relay from some wire and pieces of metal and wood. After building up a programmable machine, Petzold goes on to point out that making a usefully large machine out of relays is impractical, but that transistors can be used in much the same way to construct logic gates.
I think that this way of presenting the mechanics of computation should be quite satisfying to the average reader, though, at the same time, the amount of detail included might discourage someone who was hoping for a quick explanation. For Brad DeLong (certainly not an average reader), Petzold hit the sweet spot.
posted @ 03:21 PM EDT