练习(Java)

25428455 / 2023-07-31 / 原文

//将一个数转换为十六进制
int num = 60;
int i1 = num % 16;
int i2 = num % (16*16) / 16;
int i3 = num % (16*16*16) / (16*16);
String s1 = (i1 < 10)? ""+i1 : (""+(char)(i1 + 55));
String s2 = (i2 < 10)? ""+i2 : (""+(char)(i2 + 55));
String s3 = (i3 < 10)? ""+i3 : (""+(char)(i3 + 55));
//String s1 = (i1 < 10)? ""+i1 : (""+(char)(i1 - 10 + 'A'));
char t = (char)65;
System.out.println(num + "转换为十六进制为:" + s3 + s2 +s1);

//将一个数转换为十六进制
public static void main(String[] args) {
  int num = 60;
  int j1 = num & 15;
  String s1 = (j1 > 9) ? (char) (j1 - 10 + 'A') + "" : j1 + "";//取出了最低的4位对应的字符

  int j2 = (num >>> 4) & 15;
  String s2 = (j2 > 9) ? (char) (j2 - 10 + 'A') + "" : j2 + "";//取出了次最低的4位对应的字符

  System.out.println(s2 + s1);

/*
随意给出一个三位整数,打印显示它的个位数,十位数,百位数的值。
格式如下:
数字xxx的情况如下:
个位数:
十位数:
百位数:

例如:
数字153的情况如下:
个位数:3
十位数:5
百位数:1
*/
class ReAriExer{
	public static void main(String[] args){
		int num1 = 187;
		int ge1 = num1 % 10 / 1;//个位
		int shi1 = num1 % 100 / 10;//十位
		int bai1 = num1 % 1000 / 100;//百位
		System.out.println("数字"+num1+"的情况如下:");
		System.out.println("个位数:"+ge1);
		System.out.println("十位数:"+shi1);
		System.out.println("百位数:"+bai1);
		
		//拓展:获取一个四位数的个位,十位,百位,千位
		int num2 = 1234;
		int ge2 = num2 % 10 / 1;
		int shi2 = num2 % 100 / 10;
		int bai2 = num2 % 1000 / 100;
		int qian2 = num2 % 10000 / 1000;
		System.out.println("数字"+num2+"的情况如下:");
		System.out.println("个位数:"+ge2);
		System.out.println("十位数:"+shi2);
		System.out.println("百位数:"+bai2);
		System.out.println("千位数:"+qian2);
		
		//或
		int num3 = 4321;
		int ge3 = num3 / 1 % 10;
		int shi3 = num3 / 10 % 10;
		int bai3 = num3 / 100 % 10;
		int qian3 = num3 / 1000 % 10;
		System.out.println("数字"+num3+"的情况如下:");
		System.out.println("个位数:"+ge3);
		System.out.println("十位数:"+shi3);
		System.out.println("百位数:"+bai3);
		System.out.println("千位数:"+qian3);
		
		
		//通式1: num / 所求位单位1代表的数 % 10
		//通式2: num % 所求位前一位单位1代表的数 / 所求位单位1代表的数
	}
}