Java学习第二天之进制转换

十进制和二进制之间的相互转化

class Demo2
{
	public static void main(String[] args)
	{
		toBinary(6);  //调用了递归函数
		toBin(48);


	}

	//十进制转换二进制
	public static void toBinary(int num)
	{
		if(num == 0)
			return ;
		
		toBinary(num/2);
		
		System.out.println(num%2);
	}

	public static void toBin(int num)
	{
		StringBuffer sb = new StringBuffer();
		while(num > 0)
		{
			sb.append(num % 2);
			num /= 2;
		}
		System.out.print(sb.reverse());
	}
}

十进制和八进制的转化

class Demo2
{
	public static void main(String[] args)
	{
		toHex(60);
		System.out.println();
		toHex1(60);
	}

	//通过查表法来进行进制转换,temp的值作为数组的索引
	public static void toHex1(int num)
	{
		StringBuffer sb = new StringBuffer();
		char[] str= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
		int temp;
		for(int i = 0; i < 8; i++)
		{
			temp = num & 15;
			sb.append(str[temp]);
			num = num >>>4;
		}
		System.out.print(sb.reverse());

	}


  
  	//十进制转化为十六进制
	public static void toHex(int num)
	{
		StringBuffer sb = new StringBuffer();
		for(int i = 0; i < 8; i++)    //int类型长度为32位,每次右移,最多需要移动八次
		{
			int temp = num&15;       //取出最低四位
			if(temp > 9)
			{
				//System.out.print((char)(temp-10+'A'));    //最低四位是a~f的字母还是0~9的数字
				
				sb.append ((char)(temp-10+'A'));
			}
			else
			{
				//System.out.print(temp);
				sb.append(temp);
			}
			num = num>>> 4;
		}
		System.out.print(sb.reverse());
	}


}

/* 进制转化的优化*/

class ArrayTest
{
	public static void main(String[] args)
	{
		Trans(60,16,4);
		Trans(60,8,3);
		Trans(-60,16,4);
		Trans(0,8,3);
		}
	
	//调用Trans函数完成进制转换
	public static void toBin(int num)   
	{
		Trans(num,2,1);
	}

	public static void Trans(int num,int base,int offset)  //base代表进制
	{
		if(num == 0)
			System.out.println(0);
		int temp;
		char[] str = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
		char[] pos = new char[32];
		int count = 0;
		while(num != 0)
		{
			pos[count++] = (char)(num & (base-1));
			num = num >>> offset;

		}
		for(int i = count-1; i >= 0; i--)
			System.out.print(str[pos[i]]);
		System.out.println();
	}
}

猜你喜欢

转载自blog.csdn.net/m0_37426474/article/details/81192378