[I hope all Canon cameras work the same: this is what I learned from the 400D, but from my browsing of the ML source code, it seems to use the same method]

Both shutter speeds and aperture values (and even the ISO values, at least at the 400D) use the same algorithm: raw values are simply expressed in 1/8EV steps; and that means 1EV (or double exposure time) equals to increasing the value by 8, as you already know. Exposure compensation values follow the same pattern; and this is very convenient, as you can use plain arithmetics to work with exposures.

For the intermediate values, +1/2EV is naturally expressed as (base + 4), +1/3EV is (base + 3), and +2/3EV is (base + 5). Other values (base + 1, 2, 6, or 7) for exposure or aperture are just rounded to the nearest supported values; but they all work for ISO values (thus we have 7 intermediate ISO values for each EV increment in the 400D).

Hope this helps.