-127 原码 反码 补码
char类型-127的有符号右移1位操作
-127的原码: 1111 1111
-127的反码: 1000 0000
-127的补码: 1000 0001
-127转换成整形高位用1填: 1111 1111 1111 1111 1111 1111 1000 0001
-127右移1位, 高位用1填补: 1111 1111 1111 1111 1111 1111 1100 0000
-127右移1位的反码: 1111 1111 1111 1111 1111 1111 1011 1111
-127右移1位的原码: 1000 0000 0000 0000 0000 0000 0100 0000
8位只能标识 [-128,127]
<< : 左移运算符,右边空出的位用0填补,高位左移溢出则舍弃该高位:num << 1,相当于num乘以2
>> : 右移运算符,左边空出的位用0或者1填,正数用0负数用1填,低位右移溢出则舍弃该位。num >> 1,即num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐
byte[] a = new byte[10];
a[0] = -127;
a[1] = -128;
System.out.println(a[0]);
int c = a[0] & 0xFF;
System.out.println(c);
a[2] = (byte) (a[0]<<1);
System.out.println(a[2]);
a[3] = (byte) (a[0]>>1);
System.out.println(a[3]);