Java编写十进制数转(二进制,八进制,十六进制)附源码(面向对象思想解决)

您所在的位置:网站首页 键盘输入十六进制数怎么输入 Java编写十进制数转(二进制,八进制,十六进制)附源码(面向对象思想解决)

Java编写十进制数转(二进制,八进制,十六进制)附源码(面向对象思想解决)

2024-07-04 05:46| 来源: 网络整理| 查看: 265

十进制数转(二进制,八进制,十六进制) 写在前面进制转换(数学方法) 1、 转换为二进制算法解析算法源码 2、 转换为八进制算法解析算法源码 3、 转换为十六进制算法解析算法源码欢迎评论区评论字符拼接算法 工具类源码主程序源码

写在前面

**本文共涉及两个Java程序(即两个类) 工具类:类中有三个方法,分别用于转换为二,八,十六进制(文末有完整源码) 主程序类:用于调用工具类中的方法来实现十进制数转换(文末有完整源码) **

进制转换(数学方法)

进制转换公式

1、 转换为二进制算法解析 算法源码 // 将x转换为二进制方法 public int Two(int x) { int t=0; int a; for(int i=1;x>0;i=i*10) { a=x%2; x=x/2; t=t+a*i; } return t; }

依照数学公式,程序中x%2的结果为余数,即二进制中最后一位数字,x=x/2即用新的x求余,最终我们要得出二进制数,就要将余数逆向输出,由于输出后只是表达方式不同(只有0,1),但仍然是十进制数,所以逆向输出就是:第一个得出的余数是个位数,第二个得出余数是十位数。故可以利用累乘10后再累加得出最终的二进制数。

2、 转换为八进制算法解析 算法源码 // 将x转换为八进制方法 public int Eight(int x) { int t=0; int a; for(int i=1;x>0;i=i*10) { a=x%8; x=x/8; t=t+a*i; } return t; }

八进制数与二进制转换类似,故略,不再详解

3、 转换为十六进制算法解析 算法源码 // 将x转换为十六进制方法 public String Sixteen(int x) { String t=""; int a; for(;x>0;) { a=x%16; switch(a) { case 10: t="A"+t; break; case 11: t="B"+t; break; case 12: t="C"+t; break; case 13: t="D"+t; break; case 14: t="E"+t; break; case 15: t="F"+t; break; default : t=a+t; } x=x/16; } return t; }

由于十六进制的表示方法中超出10的数的表示是由字母表示, (A:10 B:11 C:12 D:13 E:14 F:15) 所以不能用上述方法解决。 由于涉及字符,所以利用字符串的连接得出十六进制结果。 基本方法依然是求余然后逆向输出余数,只是当遇到余数大于10时利用字符拼接,所以加上**switch(a)**判断拼接的字符,由于是拼接,所以不用累乘,直接得出余数后循环拼接。 上述转换为二进制及八进制的算法也可用字符拼接,比累乘累加简单一点

欢迎评论区评论字符拼接算法 工具类源码 // 工具类 public class BinaryTool { public int Two(int x) { int t=0; int a; for(int i=1;x>0;i=i*10) { a=x%2; x=x/2; t=t+a*i; } return t; } public int Eight(int x) { int t=0; int a; for(int i=1;x>0;i=i*10) { a=x%8; x=x/8; t=t+a*i; } return t; } public String Sixteen(int x) { String t=""; int a; for(;x>0;) { a=x%16; switch(a) { case 10: t="A"+t; break; case 11: t="B"+t; break; case 12: t="C"+t; break; case 13: t="D"+t; break; case 14: t="E"+t; break; case 15: t="F"+t; break; default : t=a+t; } x=x/16; } return t; } } 主程序源码 // 主程序 import java.util.Scanner; //导入Scanner包 public class Shuru { public static void main(String[] args) { BinaryTool Tool = new BinaryTool(); Scanner print = new Scanner(System.in); int x=print.nextInt(); System.out.println(Tool.Two(x)); System.out.println(Tool.Eight(x)); System.out.println(Tool.Sixteen(x)); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3