直接看代码,有注释,不当之处请指正,二进制第一位为符号位:
public class TheTwoTogether {
public static void main(String[] args) {
//将数字转化为二进制字符串
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
if (a < 0) {
String s1[] =eightbinary(a);
s1[0]="1";
for (String s:s1){
System.out.print(s);
}
}
else {
String s1[] =eightbinary(a);
for (String s:s1){
System.out.print(s);
}
}
}
private static String[] eightbinary(int a){
int b = Math.abs(a);//取绝对值
String s = Integer.toBinaryString(b);
//下面这一步是为了:将为Integer类二进制转化为8位的Integer类二进制。因为%08d中的d没要求是整数类型
Integer s2=Integer.valueOf(s);
//将为Integer类二进制转化为8位的Integer类二进制(本来可能不是8位,比如 3---->11,就是2位)
String sb1 = String.format("%08d", s2);
int arr[] = new int[8];
//将八位二进制分开,一个一个的,存入到string类型的数组sarray中
String[] sarray = sb1.split("");
return sarray;
}
}
此代码适用范围-127~+127,原因是我转化的限制是8位二进制,并且第一位是符号位,如果想扩大范围,改成十六进制或者三十二进制就可以,思路不变。