public static void main(String [] args)
{
byte temp1=-12;
byte temp0=-10;
System.out.println(temp1<<8);
short temp=(short)(temp1<<8|temp0);//我想把temp1 作为高位 temp0作为低位 通过或运算
System.out.println(temp);//拼接成一个short类型 但是出现数据丢失 只剩下temp0 -10
// 但是如果temp0为正数 通过或运算得到的结果是对的}
{
byte temp1=-12;
byte temp0=-10;
System.out.println(temp1<<8);
short temp=(short)(temp1<<8|temp0);//我想把temp1 作为高位 temp0作为低位 通过或运算
System.out.println(temp);//拼接成一个short类型 但是出现数据丢失 只剩下temp0 -10
// 但是如果temp0为正数 通过或运算得到的结果是对的}
temp=temp<<8;
temp=temp|temp0;
temp0<<8 就变成 11111111 1111111 11110100 00000000
按位或之前temp 就变成 11111111 1111111 11111111 11110110
一旦它俩按位或,那么还是temp的值,即是-10。
我的处理方法class Move
{
public static void main(String [] args)
{
byte temp1=-12;
byte temp0=-10;
short temp=(short)(temp1<<8|(temp0 & 0x00ff));//与0x00ff进行AND操作,将高位变成0
System.out.println(temp);
}
}结果输入为 -2826
对于正数也可以
temp0 = 11111111111111111111111111110110
你说他们两个 或 之后 结果是多少?