Java关于十进制转各种进制的原理分析及源码


在这里插入图片描述

本篇文章详细到位地介绍进制之间的转换,并且附上了Java代码(其他语言类似),以便读者更好理解进制之间的转换,并且能够通过笔者提供的源码进行快速准确的进制转化,希望能帮助到大家。
这里再提供一些二进制、八进制、十六进制的网站,供读者前往学习哦!

二进制
八进制
十六进制

十进制转二进制

首先,十进制转换为二进制的时候,整数部分和小时部分的转换是不一样的。
整数部分:首先对十进制数(如图所示的29),进行除2并取余,将余数写到右边,将得到的商不断进行之前的操作,直到商为0。最后得到的二进制数就是,将得到的余数从下往上读。
小数部分:如第二例子所示,我们将要进行转换的十进制小数进行乘二取整,就是乘2得到的数的个位作为右边的得数,并且将各个位恢复成0,继续之前的操作,直到小数部分为0。从上往下念就是我们要转换的二进制数啦。

在这里插入图片描述

十进制转八进制

做法和十进制转换为二进制的差不多,只是将除数二变为8罢了。

十进制转十六进制

做法和十进制转换为二进制的差不多,只是将除数二变为16罢了。
还有一个要注意的点是:十六进制发表示,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,FF,分别表示1-16。

各种进制向十进制的转换

前面介绍了各种十进制转其他进制的方法,为了文章的完整性和补充,这里再介绍一下其他进制向十进制的转换方法。

在这里插入图片描述
上图是二进制转十进制的方法,其他进制十进制时,只要将上图所示公式中的底数2改成相应的进制;比如二进制是2^(n-1);
八进制是8^(n-1);
十六进制是16^(n-1);
举几个例子来看看吧,对于二进制数110101:x = 1 + 02 + 122 + 0222 + 12222 + 122222;
八进制数721:x = 1 + 2
8 + 788;
十六进制数A962:x = 2 + 6*16 + 9 * 16 *16 + 10 *16 *16 *16;(A十六进制中A表示10)
这个的代码笔者也加到了上面的源码中,加了注释。有需要的读者可以去复制下来学习使用。

package monster;
/*
 * 该程序用来实现进制之间的转换
 * 有二进制、八进制、十进制和十六进制
 */
import java.util.*;
public class Conversion {

	public static void main(String[] args) {

		Conversion a = new Conversion();					// 申明对象
		System.out.println("please input an decimal number to change:");
		Scanner in = new Scanner(System.in);
		int num = in.nextInt();
		a.binary(num);										// 调用对象的方法
		a.octal(num);
		a.hexadecimal(num);
		in.close();
	}
	
	public void binary(int num){
		// 十进制转二进制
		System.out.println("the reverse binary number is:");
		while(true){
			System.out.print((num%2) +" ");
			num = num/2;
			if(num == 0) {
				break;
			}
		}
		System.out.println();
	}
	
	public void octal(int num){
		// 十进制转八进制
		System.out.println("the decimal number is:");
		while(true){
			System.out.print((num%8) +" ");
			num = num/8;
			if(num == 0) {
				break;
			}
		}
		System.out.println();
	}
	
	public void hexadecimal(int num){
		// 十进制转十六进制
		System.out.println("the hexadecimal number is:");
		while(true){
			System.out.print((num%16) +" ");
			num = num/16;
			if(num == 0) {
				break;
			}
		}
		System.out.println();
	}
}

下面是代码结果:
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原创小白变怪兽

帮助原创小白成为怪兽吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值