byte number=-23;
number &=0xF0;
number >>=4;
System.out.println("number1:"+number);
number=-23;
number = (byte)((number & 0xF0) >> 4);
System.out.println("number2:"+number);输出:number1:-2
number2:14
number &=0xF0;
number >>=4;
System.out.println("number1:"+number);
number=-23;
number = (byte)((number & 0xF0) >> 4);
System.out.println("number2:"+number);输出:number1:-2
number2:14
number = (byte) ((number & 0xF0) >> 4);
换成:
number = (byte) ((byte) (number & 0xF0) >> 4);就是你原来的结果了吧?
说白了就是int型和byte型 符号位(最高位)问题。
+= 自增运算
&= 自与运算(& 是位运算中的 与)
>>= 自优异运算 (>> 是位运算中的 右移)
规律也是一样的:
number &= 0xF0;
相当于:
number = (byte) (number & (等式右侧));