java移位运算符

java移位运算符分为三种,<<(左移),>>(带符号右移),>>>(不带符号右移)。对于byte和short类型,在移位运算前会首先把参与运算的数值转为int型,再进行移位运算,因此移位运算后得到的结果是一个整形数据。有符号数以补码表示,最高位为1代表负数,最高位为0则代表正数。所有位为0则表示0。在不溢出的情况下,<<(左移)移一位则代表原数值*2,带符号右移>>一位则代表原数值/2。

左移<<:所有位左移,低位补0。

带符号右移>>:所有位右移,低位舍弃,最高位补符号位(1:负数,0:正数)

不带符号右移>>>:所有位右移,低位舍弃,高位补0

	public static void main(String[] args) {
		byte n = -21;
		System.out.println("原值:"+Integer.toBinaryString(n));
		System.out.println("左移:"+Integer.toBinaryString(n<<1));
		System.out.println("带符号右移:"+Integer.toBinaryString(n>>1));
		System.out.println("不带符号右移:"+Integer.toBinaryString(n>>>1));
	}

 现实结果如下:

原值原值原值:11111111111111111111111111101011
左移左移左移:11111111111111111111111111010110
带带符号右移:11111111111111111111111111110101
不带符号右移:1111111111111111111111111110101(由于高位为0,没有显示)

你可能感兴趣的:(java移位运算符)