【小工具类】将一个十进制数转化成二进制/四进制/八进制/16进制

先直接上完整代码:

public class Test {
	
	public static void main(String[] args) {
		int num = 100;
		System.out.println(toBinary(num));
		System.out.println(toQuaternary(num));
		System.out.println(toOctal(num));
		System.out.println(toHexadecimal(num));
	}
	
	//将十进制转化为二进制
	public static String toBinary(int num){
		return trans(num, 2, 1);
	}
	
	//将十进制转化为四进制
	public static String toQuaternary(int num){
		return trans(num, 4, 2);
	}
	
	//将十进制转化为八进制
	public static String toOctal(int num){
		return trans(num, 8, 3);
	}
	
	//将十进制转化为十六进制
	public static String toHexadecimal(int num){
		return trans(num, 16, 4);
	}
	
	/**
	 * 将十进制数num转换成base进制数
	 * @param num 十进制数
	 * @param base 进制数
	 * @param offset 右移位数
	 */
	public static String trans(int num, int base, int offset){
		
		if(num == 0){
			System.out.println("0的"+ base + "进制是0");
			return "0的"+ base + "进制是0";
		}
		
		char[] arr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
		StringBuffer sb = new StringBuffer();
		while(num != 0){
			int temp = num&(base-1); //位运算 底层是两个二进制数来实现的运算
			sb.append(arr[temp]);
			num = num >>> offset; //无符号位右移
		}
		sb = sb.reverse(); //反转
		return sb.toString();
	}

}

逻辑运算总结:

1、逻辑运算符:就是指的是一种关系,作用:用于连接两个布尔类型的表达式

包括以下几种:

&:与,特点:两边为真才为真,一边为假则为假

| 或,特点:一边为真则为真,两边为假才为假

! 非,特点:非真为假,非假为真

^ 异或 特点:同为假,异为真 规律:一个数同时异或这个数两次结果还是这个数。用于加密

&& 双与 特点:与&一样,但是有点小区别,在下面单独讨论。

|| 双或  特点:与|一样,但是有点小区别,在下面单独讨论。

扫描二维码关注公众号,回复: 126684 查看本文章

<<:左移 规律:左移几位就是该数乘以2的几次方,

>>:右移:规律:右移几位就是除以2的几次方

注意对于左移和右移中高位的问题,总结为一句话:简单一句话:最高是什么就拿什么补,高位为0就拿0补,高位为1就拿1补;

>>>:无符号右移:区别于>>就是高位出现的空位,无论高位原来是什么都用0补;

2、&&&的区别:

共同点:二者都可以作为逻辑与的运算符,表示逻辑与,

不同点:&&有短路的功能,如果第一个表达式为false时,不需要进行第二个表达式的运算,

&操作符两边的表达式不是boolean类型时,表示按位与操作。Eg:我们通常使用0x0f来与一个整数进行&运算,获取低四位;

3、|||的区别:

 |:无论左边的运算结果是什么,右边都参与运算。

 ||:当左边为真时,右边不参与运算的。

猜你喜欢

转载自blog.csdn.net/pjz161026/article/details/79507445