我无法理解的代码是这样做的:
int decodeTimeStampByte(final byte timeByte) {
return timeByte & (~64);
}
因此,例如,如果我得到字节4c(即ASCII L),那么上面的函数将对它执行什么操作?字节44怎么样?
最佳答案
'〜'是按位的'not',因此64 = 0x40 = 0100000b和〜64 = 1011111b(设置的低5位)。
然后,“&”是按位“与”,它只剩下timeByte的低5位。因此,基本上,它是timeByte到0..63范围的截断。
解码时间StampByte(4c)= 0xC(12)
解码时间标记字节(44)= 44
附言是的,我忘记了更高的位。 〜64 = 1011111b。
这可能是代码中的错误,也可能是有意将符号位(第7位)保留在原位。
P.P.S.似乎就像是古老的黑客技术,可以榨取更多性能