On 04/20/2015 04:15 PM, Jim Mooney wrote:
  The key is that the result gets multiplied by 2 each time

so for an N bit number the leftmost digit winds up being
effectively 2**N, which is what you want.



Alan G


Ah, the light dawns once it was restated. It would be even simpler if you
could multiply each element of the binary number by it's respective power
of two, and sum them all at once. I hear Py 3.5 will have vector abilities.
I wonder it if would do something like that.

It's important to understand these conversion methods, or I would have earlier mentioned that you can convert from a binary string simply by

    x = int("1011", 2)

No loop needed.


But if you need a loop for an analagous algorithm, find a way to either minimize the number of times through the loop, or to reduce the work done in each loop.

Ben's algorithm is much simpler than the one in the book you're reading.

    binary_text = '11011101'
    result = 0

    for binary_digit in binary_text:
        # Accumulate powers of 2 for each digit.
        result = result * 2 + int(binary_digit)

    print(result)

But more importantly, it's much simpler than calculating various powers of two and multiplying the various coefficients by them, and somehow "sum them all at once".


--
DaveA
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to