12
12
public class ReverseBits {
13
13
14
14
public static int getNumberByReversingBits (int n ) {
15
- System .out .println (Integer .toBinaryString (n ));
16
15
17
16
int m ;
18
17
// assume 32-bit number
19
18
m = 0x55555555 ; // 1-bit swap
20
- n = ((n & m ) << 1 ) | ((n & ~m ) >> 1 );
19
+ n = ((n & m ) << 1 ) | ((n & ~m ) >>> 1 );
21
20
22
21
m = 0x33333333 ; // 2-bits swap
23
- n = ((n & m ) << 2 ) | ((n & ~m ) >> 2 );
22
+ n = ((n & m ) << 2 ) | ((n & ~m ) >>> 2 );
24
23
25
24
m = 0x0f0f0f0f ; // 4-bits swap
26
- n = ((n & m ) << 4 ) | ((n & ~m ) >> 4 );
25
+ n = ((n & m ) << 4 ) | ((n & ~m ) >>> 4 );
27
26
28
27
m = 0x00ff00ff ; // 8-bits swap
29
- n = ((n & m ) << 8 ) | ((n & ~m ) >> 8 );
28
+ n = ((n & m ) << 8 ) | ((n & ~m ) >>> 8 );
30
29
31
- n = (n << 16 ) | (n >> 16 ); // 16-bits swap
30
+ n = (n << 16 ) | (n >>> 16 ); // 16-bits swap
32
31
33
- System .out .println (Integer .toBinaryString (n ));
34
32
return n ;
35
33
}
36
34
@@ -45,7 +43,6 @@ public static int getNumberByReversingBits(int n) {
45
43
* @return
46
44
*/
47
45
public static int getNumberByReversingBits_V1 (int n ) {
48
- System .out .println (Integer .toBinaryString (n ));
49
46
50
47
int reverseNum = 0 , i = 0 ;
51
48
while (n > 0 ) {
@@ -55,13 +52,12 @@ public static int getNumberByReversingBits_V1(int n) {
55
52
n >>= 1 ;
56
53
i ++;
57
54
}
58
- System .out .println (Integer .toBinaryString (reverseNum ));
59
55
60
56
return reverseNum ;
61
57
}
62
58
63
59
public static void main (String a []) {
64
- System .out .println (getNumberByReversingBits (7 ));
65
- System .out .println (getNumberByReversingBits_V1 (7 ));
60
+ System .out .println (getNumberByReversingBits (79876 ));
61
+ System .out .println (getNumberByReversingBits_V1 (79876 ));
66
62
}
67
63
}
0 commit comments