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 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor