java快速入门知识整理:4、进制基础_进制转换_java代码示例(2022-08-24-2737更新完成)

166 阅读6分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

文章目录

一、进制基础_进制转换

10进制:是逢10进1 的计数规则

2进制:是逢2进1 的计数规则

8进制:是逢8进1 的计数规则

16进制:是逢16进1 的计数规则

10进制对应2进制

2进制-->10进制

10进制-->2进制

16进制-->10进制

10进制-->16进制

二、进制转换_java api 代码示例***


一、进制基础_进制转换

 数学:计数的规律

10进制:是逢10进1 的计数规则

 权:10000 1000 100 10 1   每个数位上代表1的个数

 基数:10  进位规律

 数字:0 1 2 3 4 5 6 7 8 9

 权是基数的n次幂

2进制:是逢2进1 的计数规则

 权:128 64 32 16 8 4 2 1 每个数位上代表1的个数

 基数:2  进位规律

 数字:0 1

 权是基数的n次幂

8进制:是逢8进1 的计数规则

 权:4096 512 64 8 1 每个数位上代表1的个数

 基数:16  进位规律

 数字:0  1  2  3  4  5  6  7 

 权是基数的n次幂

16进制:是逢16进1 的计数规则

 权:256 16 1 每个数位上代表1的个数

 基数:16  进位规律

 数字:0 1 2 3 4 5 6 7 8 9 a b c d e f 

 权是基数的n次幂

  

10进制对应2进制

  0     0

  1     1

  2    10

  3    11

  4   100

  5   101

  6   110

  7   111

  8  1000

  9  1001

 10  1010

 11  1011

 12  1100

 13  1101

 14  1110

 15  1111

2进制-->10进制

 ************************************************************ 

 11000000(2) = ?(10) 

  256 128 64 32 16  8  4  2  1

    0     1    1   0   0   0  0  0  0

11000000(2) = 128 + 64 = 192(10) 

 11000101(2) = ?(10)

256 128 64 32 16  8  4  2  1

     0    1    1   0   0   0  1  0  1

11000101(2) = 128 + 64 + 4+1 = 197(10)

快速手动计算-总结:

步骤1、列出 2的次方

步骤2、二进制数对应上 2的次方

步骤3、二进制数为1的, 2的次方,进行相加

 ************************************************************ 

10进制-->2进制

 ************************************************************ 

 234(10) = ?(2) = 11101010(2) 

                128  64  32 16  8  4  2  1

 234(10) =    1     1   1    0  1  0  1  0 (2)

                  106  42  10       2      0

234(10)  = 11101010(2) 

201(10)= ?(2)

                128  64  32 16  8  4  2  1

 201(10)=     1    1    0   0   1  0  0  1

                   73    9              1          0

201(10)= 11001001(2)

快速手动计算-总结:

步骤1、列出 2的次方

步骤2、十进制数依次减去 2的次方,减去大于0的计为1,小于等于0的计为0


             

16进制-->10进制

************************************************************            

                     256      16        1

    141(16) = 1256 + 416 + 1*1 = 321(10)

快速手动计算-总结:

步骤1、列出 16的次方

步骤2、16进制数,对应相乘,累加即可


    

10进制-->16进制


                    256   16     1

   321(10) =     1      4      1 = 141(16)

                      65      1      0

快速手动计算-总结:

步骤1、列出 16的次方

步骤2、依次相除

​编辑

************************************************************ 

二、进制转换_java api 代码示例***

​编辑

我们用 java代码来验证,如上 10进制转换2进制 等是否正确:

package t04_进制转换;


public class BaseConversionTest {
	public static void main(String[] args) {
		BaseConversionTest baseConversionTest = new BaseConversionTest();
		
		baseConversionTest.java10to2();
//		baseConversionTest.java2to10();
//		baseConversionTest.java10to16();
//		baseConversionTest.java16to10();
//		baseConversionTest.java10to8();
//		baseConversionTest.java8to10();
		
	}
	
	
	/**
	 * 10进制转2进制
	 * 
	 * Java会将10进制"234" 转化为 2进制赋值到 i 的内存中。
	 * 在计算机内部,只有2进制数据
	 * 
	 * toBinaryString(int i): 把10进制转化为2进制的方法
	 */
	private void java10to2(){
		
		int i=234;
		String str3 = Integer.toBinaryString(i);
		System.out.println("str3--->"+str3); //11101010
		
		i = 6;
		String str1 = Integer.toBinaryString(i);
		System.out.println("str1--->"+str1); //110
		
		i =8;
		String str2 = Integer.toBinaryString(i);
		System.out.println("str2--->"+str2); //1000
		
		
		System.out.println(Integer.toBinaryString(201));//11001001  
		System.out.println(Integer.toBinaryString(-10));//11111111111111111111111111110110  
		System.out.println(Integer.toBinaryString(-9)); //11111111111111111111111111110111  
		System.out.println(Integer.toBinaryString(-8)); //11111111111111111111111111111000  
		System.out.println(Integer.toBinaryString(-1)); //11111111111111111111111111111111  
		System.out.println(Integer.toBinaryString(0));//0  
		System.out.println(Integer.toBinaryString(1));//1  
		System.out.println(Integer.toBinaryString(10));//1010
		
		i = -1;//在内存中 -1 是32个1, 是补码!
		System.out.println(Integer.toBinaryString(i));//11111111111111111111111111111111
		
	}
	
	
	/**
	 * 2进制转10进制
	 */
	private void java2to10(){
		String str = Integer.valueOf("110",2).toString();//6
		System.out.println(str);
	}
	
	
	/**
	 * 10进制转成16进制
	 * Integer.toHexString(int i)
	 */
	private void java10to16(){
		String str = Integer.toHexString(321);//141
		System.out.println(str);
	}
	
	
	/**
	 * 16进制转成10进制
	 */
	private void java16to10(){
		String str = Integer.valueOf("141",16).toString();//321
		System.out.println(str);
	}
	
	
	/**
	 * 10进制转成8进制
	 * Integer.toOctalString(int i)
	 */
	private void java10to8(){
		String str = Integer.toOctalString(10);//12
		System.out.println(str);
	}
	
	
	/**
	 * 8进制转成10进制
	 */
	private void java8to10(){
		String str = Integer.valueOf("12",8).toString();//10
		System.out.println(str);
	}
	
	
}

​ ​