欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

黑马程序员_毕向东_Java基础****学习笔记(十一)

程序员文章站 2022-07-07 23:19:02
...
public class ArrayTest5 {
	public static void main(String[] args) {
		toBin(6);
		toHex(60);
	}

	/*
	 * 十进制----->十六进制
	 */
	public static void toHex(int num) {
		StringBuffer sb = new StringBuffer();
		for(int x=0;x<8;x++){
			 int temp=num&15;
			 if(temp>9)
				 //System.out.println((char)(temp-10+'A'));
				 sb.append((char)(temp-10+'A'));
			 else
				 //System.out.println(temp);
				 sb.append(temp);
			 num=num>>>4;
		 }
		System.out.println(sb.reverse());
	}

	/*
	 * 十进制----->二进制
	 */
	public static void toBin(int num) {
		StringBuffer sb = new StringBuffer();
		while (num > 0) {
			// System.out.println(num%2);
			sb.append(num % 2);
			num = num / 2;
		}
		System.out.println(sb.reverse());
	}
}


public class ArrayTest6 {

//	public static void main(String[] args) {
//		toHex(60);
//		toHex(-60);
//		toBin(20);
//		toBin(-20);
//	}
	public static void toBin(int num){
		//定义二进制表
		char [] chs={'0','1'};
		
		//定义一个临时存储容器
		
		char [] arr= new char [32];
		
		//定义一个操作数组的指针
		int pos =arr.length;
		while(num!=0){
			int temp=num&1;
			arr[--pos]=chs[temp];
			num=num>>>1;
			}
		for(int x=pos;x<arr.length;x++){
			System.out.print(arr[x]);
		}
		}
	/*
	 * 0 1 2 3 4 5 6 7 8 9 A B C D E F==十六进制元素 0 1 2 3 4 5 6 7 8 9 10 11 12 13
	 * 14 15 查表法:将所有的元素临时存储起来。建立对应关系。 每一次&15之后的值作为索引去查建立好的表。就可以找对应的元素
	 * 
	 * 这个表怎么建立呢? 可以通过数组的形式来定义 发现终于出结果了。但是是反着的。想要证过来呢,可以通过StringBuffer
	 * reverse功能来实现 所以可以使用已经学习过的容器:数组来完成存储
	 */
	public static void toHex(int num) {
		char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
				'B', 'C', 'D', 'E', 'F' };
		// 定义一个临时容器
		char[] arr = new char[8];
		// for (int x = 0; x < 8; x++)
		// int pos = 0; // 定义一个指针
		int pos = arr.length;
		while (num != 0) {
			int temp = num & 15;
			// System.out.println(chs[temp]);
			// arr[pos++] = chs[temp];
			arr[--pos] = chs[temp];
			num = num >>> 4;
		}
		System.out.println("pos="+pos);
		// 存储数据的arr数组遍历
		// for (int x = pos - 1; x >= 0; x--) {
		// System.out.print(arr[x] + ",");
		// }
		for (int x = pos; x < arr.length; x++) {
			System.out.print(arr[x] + ",");
		}
	}
}

public class ArrayTest7 {
	public static void main(String[] args) {
		toBin(6);
		toBin(-6);
		toHex(60);
		toHex(-60);
		toBa(15);
		toBa(-15);
		
	}
	/*
	 * 十进制-------->二进制
	 */
	public	static	void toBin(int num){
		trans(num,1,1);
	}
	/*
	 * 十进制-------->八进制
	 */
	public	static	void toBa(int num){
		trans(num,7,3);
	}
	/*
	 * 十进制-------->十六进制
	 */
	public	static	void toHex(int num){
		trans(num,15,4);
	}
	public static void trans(int num, int base, int offset) {
		if(num==0){
			System.out.println(0);
			return;
		}
		char[] chs = { '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;
		while(num!=0){
			int temp=num&base;
			arr[--pos]=chs[temp];
			num=num>>>offset;
		}
		for(int x=pos;x<arr.length;x++){
			System.out.print(arr[x]);
		}
		System.out.print("***");
	}
}