在本教程中,我们将讨论一个有效地反转数字位的程序。
为此,我们将给出一个非负数。我们的任务是将数字转换为二进制格式,将数字的二进制位反转。然后最后打印该数字的十进制等效值。
#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