Search code examples
cbit

How do I reverse only the last 8 bits of an integer (32 bit) in C?


I have implemented the below function in C but it is not working properly.

int reverse(int org_num){
   int rev_num=0;
   int i=1;
   while(i<=8){
       int last_bit=org_num&1;
       rev_num=rev_num|last_bit;
       rev_num=rev_num<<1;
       org_num=org_num>>1;

       i=i+1;
   }
   return rev_num; }

Solution

  • I solved the problem by breaking the loop for the last bit since that is not required.

        int reverse(int org_num){
           int rev_num=0;
           int i=1;
           while(i<=8){
              int last_bit=org_num&1;
              rev_num=rev_num|last_bit;
              if(i==8) {
                break;
              }
              rev_num=rev_num<<1;
              org_num=org_num>>1;
        
              i=i+1;
           }
           return rev_num;
       }