Thanks Dave , appreciate it

On Sun, Sep 18, 2011 at 7:15 PM, Dave <[email protected]> wrote:

> @Arun: This is the way two's complement arithmetic works. For any x, -
> x = ~x + 1. This says that to negate a number, complement it and add
> 1.
>
> Technically speaking, two's complement is a "weighted code." Each bit
> position has a certain weight that is added in if the bit in that
> position is a 1. Counting from the right (low-order bit), the weights
> are 1, 2, 4, 8, ..., -2^(n-1), where n is the number of bits in the
> integer. Thus, for example, for 8 bit integers, the weights are 1, 2,
> 4, 8, 16, 32, 64, and -128.
>
> Let b<i> be the ith bit of the number, counting from the right with
> the low order bit being bit 0. Let w<i> be the weight of the ith bit.
> Then the value of the number is
>
> V = sum from i = 0 to n-1 of (b<i> * w<i>).
>
> The value of the complement of the number is
>
> ~V = sum from i = 0 to n-1 of ((1 - b<i>) * w<i>),
>
> where 1 - b<i> is the complement of bit i, i.e., ~b<i>. Then
>
> V + ~V = sum from i = 0 to n-1 of w<i> since b<i> cancels -b<i> for
> every i.
>
> The sum of the weights is -1. Thus, V + ~V = -1, from which -V = ~V +
> 1.
>
> Dave
>
> On Sep 18, 5:26 pm, Arun Vishwanathan <[email protected]> wrote:
> > Hi all,
> >
> > When I take negation of an integer in C, 0 is displayed as -1
> > ~5 is displayed as -6.
> > Can some one tell me the logic of how this conversion is happening in C?
> >
> > Arun
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>


-- 
 "People often say that motivation doesn't last. Well, neither does bathing
- that's why we recommend it daily."

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to