使用字符串接收二进制原码。
1、辗转相除
2、凑齐位数
3、补齐符号位
public class Binary{
public static void main(String[] args){
String binary1 = getBinary(125);
String binary2 = getBinary(-134);
System.out.println(binary1);
System.out.println(binary2);
}
public static String getBinary(int number){
//1、辗转相除
String binary = getBinaryString (number);
//2、补齐位数
binary = fixLength(binary);
//3、添加符号位
binary = (number > 0 ? 0 : 1) + binary;
return binary;
}
//用辗转相除法将十进制数字转化为二进制数字
public static int getBinaryString(int number){
number = abs(number);//求number的绝对值
String result = "";//使用字符串接收二进制数字
while(number != 1){//辗转相除
result = result + number % 2;//字符串倒叙接收
number /= 2;
}
return result;
}
//补齐除了符号位之外的位数
public void static fixLength(String binary){
int max = 0;
int length = binary.length();
if(length < 8){
max = 8;
}else if(length < 16){
max = 16;
}else if(length < 32){
max = 32;
}else{
max = 64;
}
for(;length < max - 1; length++){
binary = 0 + binary;
}
}
//求数字的绝对值
public static int abs(int number){
return number > 0 ? number : -number;
}
}