Replying to myself: I should proofread better _before_ I post. Sorry,
but the explanation should say

ni is bit i of n. nj is bit j of n. n & ~(ni | nj) removes the two
bits, and then they are shifted to the exchanged positions and or'd
in.

Dave

On Sep 13, 2:04 pm, Dave <dave_and_da...@juno.com> wrote:
> @Kumar: How about this:
>
> int exchange2bits(int n, int i, int j) // exchange bits i and j of n.
> {
>     int ni, nj;
>     ni = n & (1 << i);
>     nj = n & (1 << j);
>     return n & ~(ni | nj) | ((ni >> i) << j) | ((nj >> j) << i);
>
> }
>
> ni is bit i of n. nj is bit j of n. n & (ni | nj) removes the two
> bits, and then they are shifted to the exchanged positions and or'd
> in.
>
> Dave
>
> On Sep 13, 1:50 pm, kumar raja <rajkumar.cs...@gmail.com> wrote:
>
>
>
> > Suppose a number 'n' is given  and two bits positions i,j present in binary
> > representation of n .
>
> > Then how to exchange the contents of the two bits i and j.
>
> > E.g. n= 13
> > its binary representation is 0000 1101 (just for now consider 8 bit number)
>
> > i= 2,j=6
>
> > o/p : 0100 1001 = 73
>
> > please suggest some effective way to do this...
>
> > --
> > Regards
> > Kumar Raja
> > M.Tech(SIT)
> > IIT Kharagpur,
> > 10it60...@iitkgp.ac.in
> > 7797137043.
> > 09491690115.- Hide quoted text -
>
> - Show quoted text -

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

Reply via email to