移位运算笔记
//交换数字
@org.junit.Test
public void test3() {
//一个数异或两次还是自己
int n = 3,m = 5;
n = n ^ m;
m = n ^ m; // n ^ m ^ m = n
n = n ^ m; // n ^ m ^ n = m
System.out.println("n="+n+",m="+m);
}
//进制转换
@org.junit.Test
public void test4() {
StringBuffer sb = new StringBuffer();
//比如10进制60转换为 16进制
int num = 60;
//获取60最低4位,即(16进制最大15 二进制表示1111)获取最低4位的有效位1,通过&15
int one = num & 15;
//16进制 如果得出大于9 需要标识为字母
if(one > 9) {
sb.append((char)(one-10+'A'));
} else {
sb.append(one);
}
//右移4位 此处用无符号右移,反例:负数右移会一直补1 则会一直右移
int temp = num >>> 4;
//对temp的信息获取最低4位的有效位1
int two = temp & 15;
if(two > 9) {
sb.append((char)(two-10+'A'));
} else {
sb.append(two);
}
//反转顺序
sb.reverse();
System.out.println(sb.toString());
}