import java.math.BigInteger;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            BigInteger a = in.nextBigInteger();
            char[] binary=a.toString(2).toCharArray();
            int n=binary.length;
            //取反
            for(int i=0;i<n/2;i++)
            {   
                char t=binary[i];
                binary[i]=binary[n-i-1];
                binary[n-i-1]=t;
            }
            String tmp=new String(binary);
            BigInteger bi=new BigInteger(tmp,2);
            System.out.println(bi.toString());
        }
    }
}

常见操作

//1.将很长的字符串整数转化成为一个大整数
BigInteger bi=new BigInteger(String str);//eg."280382130818232102"
//2.利用bi转化为不同进制,返回字符串
bi.toString(int radix);//new BigInteger("8").toString(2) 输入"1000"
//3.加减乘除
a.add(BigInteger b);
a.substract(BigInteger b);
a.mutilty(BigInteger b);
a.divid(BigInteger b);
//将不同进制的字符串,转换成大整数
new BigInteger(String str,int jinzhi);

参考文档

[https://www.runoob.com/manual/jdk1.6/java.base/java/math/BigInteger.html]