利用移位运算实现进制转换

利用位运算实现进制间的转换

1.实现原理
&运算:一个数&上某个数,可以屏蔽该数的某些位;
>>>运算: 可以实现去掉低位的功能;
2.实现代码
代码中未去掉前端无用的字符‘0’
class ArrayTools 
{
	public static void main(String[] args) 
	{
		ArrayTools at = new ArrayTools();

		char[] arrHex = at.toHex(60);
		char[] arrOct = at.toOct(60);
		char[] arrBin = at.toBin(60);
		
		printArray(arrHex);
		printArray(arrOct);
		printArray(arrBin);
	}

	public char[] toBin(int num)
	{
		return trans(num,1,1);
	}

	public char[] toOct(int num)
	{
		return trans(num,7,3);
	}


	public char[] toHex(int num)
	{
		return trans(num,15,4);
	}

	/*
	num: 要转换的数
	base: 与的数值		(2^n-1)
	offset: 移位数
	*/
	private char[] trans(int num, int base, int offset)
	{
		if( num == 0)
		{
			return new char[]{'0'};
		}

		char[] charTable = 
		{
			'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
			'A', 'B', 'C', 'D', 'E', 'F' 
		};

		char[] arr = new char[32];
		int pos = arr.length-1;

		while(num != 0)
		{
			arr[pos--] = charTable[num & base];
			num = num >>> offset;
		}

		return arr;
	}

	public static void printArray(char[] arr)
	{
		for(int x = 0; x < arr.length; x++)
		{
			System.out.println("arr[" + x + "] = [" + arr[x] + "]");
		}
		System.out.println("------------华丽的分割线-------------");
	}
}
3.代码中与的数字的由来


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值