十进制转二进制、八进制、十六进制代码

  1 package com.scwyqin.Transition;
  2 
  3 /*
  4  * @author:scwyqin
  5  * @date: 2020-3-2 19:21
  6  */
  7 
  8 import java.util.Scanner;
  9 
 10 public class Transition {
 11     public static void main(String[] args) {
 12         //从键盘得到需要转换的值
 13         System.out.print("请输入需要转换的值n:");   //提醒输入
 14         Scanner sc=new Scanner(System.in);            //new一个系统输入扫描仪
 15         int n=sc.nextInt();               //得到键盘输入的值
 16         sc.close();                       //关闭扫描仪
 17         //转换为二进制
 18         TenToTwo(n);
 19         //转换为八进制
 20         TenToEight(n);
 21         //转换为十六进制
 22         TenToSixteen(n);
 23 
 24     }
 25 
 26 
 27     //用余数法将十进制转换为二进制
 28     public static void TenToTwo(int n){
 29         //声明一个数组用来存放二进制的每一位的值
 30         int[] a=new int[50];
 31         int i=0;   //记录数组角标
 32         //取余存入数组中,知道被除数为0
 33         if (n>1){          //判断n是否需要进位
 34             do {
 35                 a[i] = n % 2;     //取余存入数组
 36                 n = n / 2;
 37                 i++;            //数组角标
 38             }while (n>0);
 39         }
 40         else{
 41             a[i]=n;
 42         }
 43         System.out.print("二进制为:0b");
 44         //遍历输出数组
 45         for (i=i-1;i>=0;i--){
 46             System.out.print(a[i]);
 47         }
 48         System.out.println();   //换行
 49         
 50     }
 51 
 52 
 53     //十进制转为八进制
 54     public static void TenToEight(int n){
 55         //声明一个数组用来存储八进制数字
 56         int[] a=new int[50];
 57         int i=0;     //数组角标
 58         //同二进制,取余存入数组
 59         if(n>=8){        //判断n是否需要进位
 60             do {
 61                 a[i]=n % 8;
 62                 n=n/8;
 63                 i++;
 64             }while (n>0);
 65         }else {
 66             a[i]=n;
 67         }
 68         System.out.print("八进制为:O");
 69         //遍历输出数组
 70         for (i=i-1;i>=0;i--){
 71             System.out.print(a[i]);
 72         }
 73 
 74         System.out.println();   //换行
 75     }
 76 
 77 
 78     //十进制转为十六进制
 79     //方法同二进制和八进制,但是难点是怎么表示那几个字母
 80     public static void TenToSixteen(int n){
 81         //声明一个数组用来存储十六进制数字
 82         int[] a=new int[10];
 83         int i=0;     //数组角标
 84         //同二进制,取余存入数组
 85         if(n>=16){        //判断n是否需要进位
 86             do {
 87                 a[i]=n % 16;
 88                 n=n/16;
 89                 i++;
 90             }while (n>0);
 91         }else {
 92             a[i]=n;
 93         }
 94         System.out.print("十六进制为:0x");
 95         //遍历输出数组
 96         for (i=i-1;i>=0;i--) {
 97             //加一个条件判定语句,如果小于10就直接输出,大于10则转换为字母后输出
 98             if (a[i] < 10) {
 99                 System.out.print(a[i]);
100             } else {
101                 System.out.print(a[i] - 10 + 'a');
102             }
103         }
104     }
105 }

猜你喜欢

转载自www.cnblogs.com/scwyqin/p/12411562.html