How to convert base 10 to base 2?

Ian Kelly ian.g.kelly at gmail.com
Mon Aug 20 14:10:18 EDT 2012


On Mon, Aug 20, 2012 at 11:57 AM, Joel Goldstick
<joel.goldstick at gmail.com> wrote:
> This may be moving off topic, but since you encode -6 as -0110 I
> thought I'd chime in on 'two's complement'
>
> with binary number, you can represent 0 to 255 in a byte, or you can
> represent numbers from 127 to -128.  To get the negative you
> complement each bit (0s to 1s, 1s to 0s), then add one to the result.
> So:
> 3 -->    00000011
> ~3 ->   111111100
> add 1               1
> result   111111101
>
> The nice thing about this representation is that arithmetic works just
> fine with a mixture of negative and positive numbers.
>
> eg 8 + (-3) ----> 00001000
>                        111111101
> gives:               00000101
> which is 5!

The main reason to use two's complement is when you need to encode the
negative sign of the number as a bit in a format of fixed width, e.g.
within a byte or word.  In a string representation, unless you are
specifically trying to represent computer memory, it is usually better
to just use a minus sign, to be more consistent with how we usually
represent numerals.

Otherwise, note that complement representations are not specific to
binary.  For example, with decimal numbers we could use "ten's
complement": individually subtract each digit from 9, and add 1 to the
result.  A leading digit between 5 and 9 would be considered negative.

So, for example:
-(042)  -->  958
-(958)  -->  042

958 + 042 == 000

Cheers,
Ian



More information about the Python-list mailing list