[Tutor] Hex to Str - still an open issue

Sandip Bhattacharya sandip at lug-delhi.org
Sun Feb 6 02:14:50 CET 2005


Liam Clarke wrote:

> Sandip - 
> 
> Just looking at this - 
> i = 456
> s = ''
> while i:
>     s = str(i % 2) + s
>     i/=2
> 
> This works, far simpler than mine, which is always infuriating, but my
> question is, how exactly?
> 
> if I have the number 15, when it divides by 2, it will become 7. Yet
> no error is introduced into the binary. Argggg. Driving me nuts trying
> to figure out how. I thought maybe a larger odd number would do it,
> but no.
> 
> i = 320977545
> s = 10011001000011011101010001001
> 
> Chuck that into ol' calc, and I get, 320977545. 
> 
> Can anyone shed some more light on this?

If you imagine the number being displayed in binary inside your calculator,

i % 2, gives us the rightmost bit of the number (has to be 0 or 1)

1/=2 just right shifts the number by one.

So if you consider 15,
a. i % 2 will give you "1".
b.  So even if 15/2 gives you 7, it is ok, as the odd bit has been taken 
care of in (a).

- Sandip


More information about the Tutor mailing list