《黑马程序员》 查表法之十进制转换十六进制

------- android培训java培训、期待与您交流! ----------
public class SearchTableToHexDemo2 {
	/**
	 * 查表法之进制转换
	 */
	public static void main(String[] args) {
		int num=60;
		toHexFromTable(num);
	}
	
	public static void toHexFromTable(int num){
		char [] dataTables={
				'0','1','2','3',
				'4','5','6','7',
				'8','9','A','B',
				'C','D','E','F'
		};
		
		//定义一个临时容器来存储转换之后的数据
		char [] arr=new char[8];  //00000-0000 0000-0000 0000-0000 0000-0000
		//4个字节,每个字节8位。共即32位.byte:8位,即1个字节。但是为了简化表现形式它使用4位表示一个字节。
		
		//定义一个角标操作数组中的元素
		//每存储一个元素,角标自动增加一次
//		int pos=0;  //从0开始存
		//从数组的最后一个角标开始存
		int pos=arr.length; //我们这里初始化的时候就不让length-1了
		//直接初始化为数组的长度
		
		//为了优化这个程序。
		//我们只想取出数据中的有效位,即只将有效位存储到数组中
		while(num!=0){
			//如果数字不是0我们就可以进行&和移位的操作
			int temp=num&15;
			//我们该如何存储数据到数组中了
			//我们可以定义一个指针来进行的操作
			//存储数据到数组中
//			arr[pos++]=dataTables[temp];
//			//存储完数据之后让角标自减
//			arr[pos--]=dataTables[temp];
			//我们在存储数据之后再让角标-1然后再存数据
			arr[--pos]=dataTables[temp];
			//再将高位右移
			num=num>>>4;
		}
		
		//让这个要转换的数先去&15然后再用这个数做为索引,去查这张表
		//8个4位
//		for(int i=0;i<8;i++){
//			//因为我们知道int类型是4个字节的,每个字节是8位的
//			//而byte为了简化表现形式使用4位表示一个字节
//			//先让这个数&15,取低4位
//			int temp=num&15;
//			//然后使用这个数作为索引去查表
			System.out.print(dataTables[temp]+", ");
//			
//			//我们如何把数据存储到这个临时数组中了
//			//我们是先从0开始存,即是和循环一样的操作。
//			//所以可以和它遍历的时候一样
//			arr[i]=dataTables[temp]; //我们把转换之后的数据存储到这个数组中
//			
//			//然后把这个数的高位左移
//			num=num>>>4;  //使用>>>是为了让高位不管是0还是1,空位都使用0进行补充
//		}
		
		//现在我们来看一下我们存储之后的效果
		for (int i = pos; i < arr.length; i++) {
//		for (int i = arr.length-1; i>=0; i--) {
			System.out.print(arr[i]+",");
			//C,3,0,0,0,0,0,0,  
			//我们要反着来做。这样好办。我们从后往前遍历即可
		}
	}

	//第一步操作
	/*C, 3, 0, 0, 0, 0, 0, 0, */
	//这里是反的。我们想显示出3C的效果。那我们该如何做了。我们可以使用StringBuffer来做。但是我们没有学过
	//它也是一个容器。我们可以使用一个容器来将转换之后的数据存储起来。数组就是一个容器它就可以存储数据
	
	//第二步操作
	//0,0,0,0,0,0,3,C, 我们想要去除空位,我们该如何做了
	//我们是反着取的。我们想正着取。但是存的时候反着存了
	//C,3,0,0,0,0,0,0,
	//0000-0000 0000-0000 0000-0000 0011-1100
	//我们现在实现这种效果
	//我们只取数据的有效位,只移有效位,移到0就不移了。这样即减少了移位的次数还减少了循环的次数
	// 实现下面的效果:C,3,
	
	//我们想让它反着存该如何实现了
	//,,,,,,3,c,  
	
	//,3,C,
	//我们想去除掉数组中的多余的空位我们可以使用这种方式来操作
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值