左、右移用法

/**
 * 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