程序在C ++中有效地将数字的位反转

在本教程中,我们将讨论一个有效地反转数字位的程序。

为此,我们将给出一个非负数。我们的任务是将数字转换为二进制格式,将数字的二进制位反转。然后最后打印该数字的十进制等效值。

示例

#include <bits/stdc++.h>
using namespace std;
//倒数位
int invert_bit(int n){
   int x = log2(n) ;
   int m = 1 << x;
   m = m | m - 1;
   n = n ^ m;
   return n;
}
int main(){
   int n = 17;
   cout << invert_bit(n) << endl;
   return 0;
}

输出结果

14