十进制、二进制互转

十进制->二进制

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值