输入32位无符号整数,输出它的反向位。 例,输入4626149(以二进制表示为00000000010001101001011011100101),返回2808701440(以二进制表示为10100111011010010110001000000000)。
package shujuget;
import java.util.Scanner;
public class fanxiang {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
String line;
while (scan.hasNextLine()) {
line = scan.nextLine().trim();
// please write your code here
int a = Integer.parseInt(line);
//表示为二进制
char[] charr = new char[32];
int k = 1;
boolean isTrue;
for (int i = 32 - 1; i >= 0; i--) {
isTrue = (k & a) == k;
charr[i] = isTrue ? '1' : '0';
k = k << 1;
}
//翻转
StringBuilder reverse = new StringBuilder(); // 使用StringBuilder,更快。
for (int i = charr.length - 1; i >= 0; i--){
reverse.append(charr[i]);
}
//System.out.println(charr);
String m = reverse.toString();
//System.out.println(m);
long d =Long.parseLong(m, 2); // 2进制
System.out.println(d);
// System.out.println("answer");
}
}
}