On Mon, Aug 20, 2012 at 11:57 AM, Joel Goldstick <joel.goldst...@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 -- http://mail.python.org/mailman/listinfo/python-list