top button
Flag Notify
    Connect to us
      Facebook Login
      Site Registration Why to Join

Facebook Login
Site Registration

How to swap the two consecutive bits of unsigned integer ?

+4 votes
282 views
How to swap the two consecutive bits of unsigned integer ?
posted Nov 4, 2013 by Anuj Yadav

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button
swap is needed only if nth and nth bit are different ie 01 or 10.
int main()
{
  unsigned int N,Mask1,Mask2,Mask3,T1,T2,T3,k;
  scanf("%u",&N);
  scanf("%u",&k);
  /* 1's in bit 0 and bit 1 position */
  Mask1=0x0003;
  /* 1's in positions k and k+1 and 0's else where */
  Mask2=Mask1<<k;
  /* 0's in positions k and k+1 and 1's else where */
  Mask3=~Mask2;
  /* bring bits at position k and k+1 to bit 0 and bit 1 position*/
  T1=(N&Mask2)>>k;
  if(T1!=0&&T1!=3)
  {
    T1=T1^Mask1; /* swap */
    T1=T1<<k; /* shift the swapped bits to original position*/
    T2=N&Mask3;
    /* append other bits(0 to k-1 and k+2 to 15) */
    T3=T2|T1;
    printf("%u",T3);
  }
  else
    printf("%u",N);
}
unsigned char t1,t2;
t1=c&0*0F;
t2=c&0*F0;
t1=t1<<4;
t2=t2>>4;
return (t2|t1);

1 Answer

+1 vote

Try this to swap all consecutive bits

For 8 bit integer

u_int8 swap_bits(u_int8 ch)
{
    return ((ch & 0xAA)>>;1 ) | ( (ch & 0x55) << 1);
}

For 16 bit integer

u_int16 swap_bits(u_int16 ch)
{
    return ((ch & 0xAAAA)>>;1 ) | ( (ch & 0x5555) << 1);
}
answer Nov 5, 2013 by anonymous
Similar Questions
+6 votes

Write a program to reverse the bits of an unsigned integer ??

+4 votes

How to swap ith and jth Bits for a 32-Bit Integer?

+6 votes

What is the simples way to check if the sum of two unsigned integers has resulted in an overflow.

Contact Us
+91 9880187415
sales@queryhome.net
support@queryhome.net
#280, 3rd floor, 5th Main
6th Sector, HSR Layout
Bangalore-560102
Karnataka INDIA.
QUERY HOME
...