十进制->二进制
import java.util.*;
public class No4_37 {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.print("请输入十进制整数:");
int a=input.nextInt();
int b=a;
int[] num=new int[32];
for(int n=31;a!=0;n--){
num[n]=a%2;
a=a/2;
}
if(b<0){ //负整数情况
for(int n=0;n<32;n++){
num[n]=((num[n]==0)?1:0); //取反
}
num[31]+=1; //加一
for(int n=31;n>0;n--){
if(num[n]==2){
num[n]=0;
num[n-1]++; //满2进1
}
}
}
for(int n=0;n<32;n++)
System.out.print(num[n]);
}
}
以上为很“直白”的手法。。。
下面来个递归的:
public class show {
public static void main(String[] args) {
System.out.print(decimalToBinary(10));
}
public static String decimalToBinary(int value) {
if(value==0){
return "0";}
if(value==1){
return "1";}
int n=value/2;
int m=value%2;
if(n==1){
return "1"+m;
}
else{
return decimalToBinary(n)+m;
}
}
}
二进制->十进制
public class show {
public static void main(String[] args) {
System.out.print(binaryToDecimal("11101"));
}
public static int binaryToDecimal(String s) {
if(s.length()==1){
if(s.equals("1")){ //String不可变性啊啊啊。。。
return 1;
}else{
return 0;
}
}else{
if(s.charAt(0)=='1'){
return (int)(Math.pow(2, s.length()-1))+binaryToDecimal(s.substring(1));
}
else{
return binaryToDecimal(s.substring(1));
}
}
}
}