移位运算符 | 作用 |
---|---|
<< | 左移运算符,用于将数据的二进制位向左移动,右边使用0补充 |
>> | 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充(留意负数和非负数) |
>>> | 逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0 补充(不考虑负数和非负数) |
/**
* 编程实现移位运算符的使用
*/
public class MoveBitTest {
public static void main(String[] args) {
//1.声明一个byte类型的变量并初始化
byte b1 = 13;
//2.打印变量的值
System.out.println("b1 = "+b1);//b1 = 13
System.out.println("================");
//3.移位运算符的使用 左移
//13的二进制是:0000 1101 =>左移1位的结果是:0001 1010 =>十进制=>26
//byte b2 = b1 << 1;//不兼容的类型: 从int转换到byte可能会有损失 自动提升为int类型。32位二进制
byte b2 = (byte)(b1 << 1);
System.out.println("b2 = "+b2);//26
System.out.println(b1 << 1);//26 左移1位相当于当前整数的数值*2
System.out.println(b1 << 2);//52 左移1位相当于当前整数的数值*4
System.out.println(b1 << 3);//104 左移1位相当于当前整数的数值*8
System.out.println(b1 << 4);//208 左移1位相当于当前整数的数值*16
System.out.println("================");
//3.移位运算符的使用 右移
//13的二进制是:0000 1101 =>0000 0110=>6
System.out.println(b1 >> 1);//6 左移1位相当于当前整数的数值/2
System.out.println(b1 >> 2);//3 左移1位相当于当前整数的数值/4
System.out.println(b1 >> 3);//1 左移1位相当于当前整数的数值/8
System.out.println("================");
//3.移位运算符的使用 对于非负数来说逻辑右移和右移一样
System.out.println(b1 >>> 1);//6 左移1位相当于当前整数的数值/2
}
}