我无法理解的代码是这样做的:

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.似乎就像是古老的黑客技术,可以榨取更多性能

10-06 15:36