byte类型占2个字节,8位2进制的数据 如 0000 0110表示十进制数字6
int类型占4个字节,32位2进制的数据 0000 0000 0000 0000 0000 0000 0000 0110表示十进制数字6
long类型占8个字节,64位2进制的数据
float类型占8个字节,64位2进制的数据
double类型占8个字节,64位2进制的数据
1. 左移 2<<3
快算计算法: 2乘以2的3次方
把2 转换成2进制数据:110,直接在110最右边加3个0,既变成11000 ,换成10进制则为16
特殊:
若移动的位数超过 2进制的位数,则 去掉左边多余的位数
例如:long 类型 16808060402<<35 ,16808060402的2进制数据为 1111, 1010 ,0111, 0101 ,1010 ,1001 ,0111 ,1100, 10
它本身有34位 、再向左移动35既是在右边加35位个0,此时位数就变成69位,多出5位,最左边的5位取出,则结果为 0100 ,1110 ,1011, 0101 ,0010 ,1111 ,1001 ,0,35个0
2.右移 16<<2
快算计算法: 16除以2的2次方
把216转换成2进制数据:10000,直接减去11000最右边的3位,既变成100 ,换成10进制则为4
10进制转换成不同进制的方法
/**
* 10进制数据转换为其他进制的数据
*
* @param data
* 要转换的数据
* @param type
* 要转换的进制(例如:2,8)
* @return 1111 1010 0111 0101 1010 1001 0111 1100 10
*/
public static String convert(Long data, Integer type) {
return count(data, type).reverse().toString();
}
private static StringBuffer count(Long data, Integer type) {
Long num = data / type;
Long mod = data % type;
buffer.append(mod);
if (num != 0 && num != 1) {
count(num, type);
} else {
buffer.append(num);
}
return buffer;
}