十进制、二进制互转

来源:互联网 发布:js insertbefore 方法 编辑:程序博客网 时间:2024/06/05 12:00

十进制->二进制

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));             }         }      }    }
0 0
原创粉丝点击