位移运算问题
下面红色部分 short num 用bb[0]<<8 | bb[1] 左移8位 在|bb[1]后面的8位 不是应该就可以了吗?为什么还要bb[1] & 0xff 然后 num = num&0xFFFF; 呢? 谢谢给讲讲 最好举个列子 介绍我看看资料
import *;
public class ReaderDemo {
public static void main(String[]args) {
try {
PushbackInputStream aa =new PushbackInputStream(new FileInputStream(args[0]));
byte [] bb =new byte[2];
ByteArrayInputStream cc =new ByteArrayInputStream(bb);
InputStreamReader dd =new InputStreamReader(cc);
int num =0;
while(aa.read(bb)!=-1) {
num =(short) ((bb[0]<<8) | (bb[1] & 0xff));
num = num&0xFFFF;
if(num >= 0xA440 && num < 0xFFFF) {
System.out.println("BIG5: "+(char) dd.read());
cc.reset();
}
else {
aa.unread(bb,1,1);
System.out.println("ASCII: "+(char) bb[0]);
}
}
aa.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}