How to reverse all the bits in an integer in C++

2 Answers

0 votes
#include <iostream>
#include <bitset>
   
void print_bits(unsigned int n) { 
    std::bitset<32> bits(n);
    std::cout << bits << '\n';
}
   
unsigned int reverse_bits(unsigned int n) { 
    unsigned int total_bits = sizeof(n) * 8; 
    unsigned int reverse_n = 0; 
       
    for (int i = 0; i < total_bits; i++) { 
        if ((n & (1 << i))) 
            reverse_n |= 1 << ((total_bits - 1) - i);   
    } 
    return reverse_n; 
} 
   
   
int main() {
    int n = 13;
  
    print_bits(n);
       
    n = reverse_bits(n);
       
    print_bits(n);
   
    return 0;
}
   
   
   
   
/*
run:
   
00000000000000000000000000001101
10110000000000000000000000000000
   
*/

 



answered Sep 27, 2021 by avibootz
edited Sep 27, 2021 by avibootz
0 votes
#include <iostream>
#include <bitset>
   
void print_bits(unsigned int n) { 
    std::bitset<8> bits(n);
    std::cout << bits << '\n';
}
   
unsigned int reverse_bits(unsigned char n) { 
    n = (n & 0xF0) >> 4 | (n & 0x0F) << 4;
    n = (n & 0xCC) >> 2 | (n & 0x33) << 2;
    n = (n & 0xAA) >> 1 | (n & 0x55) << 1;
    
    return n; 
} 
   
   
int main() {
    int n = 13;
  
    print_bits(n);
       
    n = reverse_bits(n);
       
    print_bits(n);
   
    return 0;
}
   
   
   
   
/*
run:
   
00001101
10110000
   
*/

 



answered Sep 27, 2021 by avibootz

Related questions

1 answer 168 views
1 answer 134 views
134 views asked Aug 10, 2021 by avibootz
2 answers 169 views
1 answer 148 views
1 answer 132 views
...