描述
对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们称B为A的二进制逆序数。 例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。
输入描述:
一个1000位(即10^999)以内的十进制数。
输出描述:
输入的十进制数的二进制逆序数。
示例1
输入:
173
输出:
181
代码如下:
import java.math.BigInteger;
import java.util.Scanner;
/*
* 十进制VS二进制
*/
public class DecimalismVSBinary {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
BigInteger n = scanner.nextBigInteger();
//将BigInteger类型的十进制转化成二进制
String nBinary = n.toString(2);
String nBinaryReverse = "";
for (int i = nBinary.length() - 1;i >= 0; i--) {
nBinaryReverse += Character.toString(nBinary.charAt(i));
}
//BigInteger类的构造方法,将二进制的字符串转化成BigIntege十进制类型的
System.out.println(new BigInteger(nBinaryReverse,2));
}
}
}