Java的位操作 (二)

2014-11-24 07:37:28 · 作者: · 浏览: 1

out[0] = (byte) ( a >> 4 );//把a的高8位放在第一个字节
out[1] = (byte) ( a << 4 );//先把a左移四位,在右边补上4个0,第二个字节的高4位就是a的低4位了,第二个字节的高4位已经生成,低4位还是0
out[1] |= (byte) ( b >> 8 & 0x0f );//b右移8位,并与0x0f进行与操作,实际上就只保留了b的高4位,并且是在字节的低4位上,跟第二步得到的字节进行或操作,就生成了第二个字节
out[2] = (byte) b;//把b的高4位截断就得到了低8位然后再把这个字节数组写入文件,就可以用3个字节表示两个整数了。
读取:
a =(short)( (out[0] & 0xff) << 4 | ( out[1] & 0xf0 )>>4);
b = (short)((out[1] & 0x0f) << 8 | ( out[2] & 0xff));

摘自 amp@java