/**
* 1、<<(左移),>>(右移)都属于位运算符.其运算比乘除快,所以我们可以用其优化代码。
* 2、<<表示左移,针对二进制,转换成二进制后向左移动,低位补0;
* 3、>>表示右移,针对二进制,转换成二进制后向右移动;
* (1)左移将原数乘以2
* (2)右移将原数除以2
* (3)负数有符号右移高位补1
* (4)无符号右移无论正负高位添0
* (5)位移是一个取余的过程
* 4、>>>表示无符号右移(没有无符号左移), >>>与>>唯一的不同是它无论原来的最左边是什么数,统统都用0填充
*/
public class LeftAndRightRemove {
public static void main(String[] args) {
System.out.println("100左移2位:" + (100 << 2)); // 400, 2 % 32 = 2
System.out.println("100右移2位:" + (100 >> 2)); // 25, 2 % 32 = 2
//位移是一个取余的过程
System.out.println("100左移32位:" + (100 << 32)); // 100, 32 % 32 = 0
System.out.println("100右移32位:" + (100 >> 32)); // 100, 32 % 32 = 0
System.out.println("100左移34位:" + (100 << 34)); // 400, 34 % 32 = 2
System.out.println("100右移34位:" + (100 >> 34)); // 25, 34 % 32 = 2
//负数有符号右移高位补1
System.out.println("-100右移2位:" + (-100 >> 2)); // -25
//无符号右移无论正负高位添0
System.out.println("100无符号右移2位:" + (100 >>> 2)); // 25
System.out.println("-100无符号右移2位:" + (-100 >>> 2)); // 1073741799
}
}
左、右移用法
猜你喜欢
转载自blog.csdn.net/weixin_46497503/article/details/109398802
今日推荐
周排行