给定一个非负整数 N 1.问题是要颠倒 N 并打印反转位后获得的数字。请注意,数字的实际二进制表示用于位反转,不考虑前导0。 例如:
null
Input : 11Output : 13(11)10 = (1011)2.After reversing the bits we get:(1101)2 = (13)10.Input : 10Output : 5(10)10 = (1010)2.After reversing the bits we get:(0101)2 = (101)2 = (5)10.
在这种方法中,一个接一个的二进制位表示 N 通过按位右移运算获得,并在 牧师 借助于按位左移位操作。 算法:
C++
// C++ implementation to reverse bits of a number #include <bits/stdc++.h> using namespace std; // function to reverse bits of a number unsigned int reverseBits(unsigned int n) { unsigned int rev = 0; // traversing bits of 'n' from the right while (n > 0) { // bitwise left shift // 'rev' by 1 rev <<= 1; // if current bit is '1' if (n & 1 == 1) rev ^= 1; // bitwise right shift // 'n' by 1 n >>= 1; } // required number return rev; } // Driver program to test above int main() { unsigned int n = 11; cout << reverseBits(n); return 0; } |
JAVA
// Java implementation to // reverse bits of a number class GFG { // function to reverse bits of a number public static int reverseBits( int n) { int rev = 0 ; // traversing bits of 'n' // from the right while (n > 0 ) { // bitwise left shift // 'rev' by 1 rev <<= 1 ; // if current bit is '1' if (( int )(n & 1 ) == 1 ) rev ^= 1 ; // bitwise right shift //'n' by 1 n >>= 1 ; } // required number return rev; } // Driver code public static void main(String[] args) { int n = 11 ; System.out.println(reverseBits(n)); } } // This code is contributed // by prerna saini. |
Python3
# Python 3 implementation to # reverse bits of a number # function to reverse # bits of a number def reverseBits(n) : rev = 0 # traversing bits of 'n' from the right while (n > 0 ) : # bitwise left shift 'rev' by 1 rev = rev << 1 # if current bit is '1' if (n & 1 = = 1 ) : rev = rev ^ 1 # bitwise right shift 'n' by 1 n = n >> 1 # required number return rev # Driver code n = 11 print (reverseBits(n)) # This code is contributed # by Nikita Tiwari. |
C#
// C# implementation to // reverse bits of a number using System; class GFG { // function to reverse bits of a number public static int reverseBits( int n) { int rev = 0; // traversing bits of 'n' // from the right while (n > 0) { // bitwise left shift // 'rev' by 1 rev <<= 1; // if current bit is '1' if (( int )(n & 1) == 1) rev ^= 1; // bitwise right shift //'n' by 1 n >>= 1; } // required number return rev; } // Driver code public static void Main() { int n = 11; Console.WriteLine(reverseBits(n)); } } // This code is contributed // by vt_m. |
PHP
<?php // PHP implementation to reverse // bits of a number // function to reverse // bits of a number function reverseBits( $n ) { $rev = 0; // traversing bits of 'n' // from the right while ( $n > 0) { // bitwise left shift // 'rev' by 1 $rev <<= 1; // if current bit is '1' if ( $n & 1 == 1) $rev ^= 1; // bitwise right shift // 'n' by 1 $n >>= 1; } // required number return $rev ; } // Driver code $n = 11; echo reverseBits( $n ); // This code is contributed by mits ?> |
Javascript
<script> // JavaScript program to // reverse bits of a number // function to reverse bits of a number function reverseBits(n) { let rev = 0; // traversing bits of 'n' // from the right while (n > 0) { // bitwise left shift // 'rev' by 1 rev <<= 1; // if current bit is '1' if ((n & 1) == 1) rev ^= 1; // bitwise right shift //'n' by 1 n >>= 1; } // required number return rev; } // Driver code let n = 11; document.write(reverseBits(n)); </script> |
输出:
13
时间复杂度:O(num),其中 号码 是二进制表示形式中的位数 N .
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END