题目描述:
C++中int型整数内码是一个32位的01序列,该01序列有些是对称的,有些是不对称的。对于给定的一个整数,在一些场合,需要判断其整数内码的对称性。这个事情要做好还非你不行呢。
代码:
package lanqiao;
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int cnt=0;
while(in.hasNext()) {
BigInteger n =in.nextBigInteger();
String tmp =n.toString(2); //转化为2进制串
int len=tmp.length();
if(tmp.length()<32) {
for(int i=1;i<=32-len;i++)
tmp="0"+tmp; //转化为32位内码
}
String rev =new StringBuffer(tmp).reverse().toString();
if(tmp.equals(rev))
cnt++;
}
System.out.println(cnt);
in.close();
}
}