BPG(开始页)
及其3字节标识符。由于该应用程序需要在AIX平台上运行,所以我决定使用Java语言编写。为了达到最高效率,我决定只读取每个结构化字段的前6个字节,然后跳过字段中的其余字节。这样可以得到:
0: Start of field byte
1-2: 2-byte length of field
3-5: 3-byte sequence identifying the type of field
如果字段类型是BPG
,我会检查并增加页面计数器,否则不会增加。然后我会跳过该字段中的剩余字节,而不是读取它们。在这里,在跳过(实际上是字段长度)时,我发现Java使用有符号字节。
我进行了一些搜索,找到了相当多有用的信息。当然,最有用的是指令要对0xff
进行按位&
操作,以获得无符号整数值。这对于我获取可用于计算要跳过的字节数的长度是必要的。
我现在知道,在128处,我们从-128开始倒数。我想知道的是按位运算如何工作,更具体地说,如何得出负数的二进制表示。
如果我正确理解按位&
,那么你的结果等于一个数字,其中只有两个数字的公共位被设置。因此,假设byte b = -128
,我们会有:
b & 0xff // 128
1000 0000-128
1111 1111 255
---------
1000 0000 128
那么,如何得到-128的二进制表示为10000000?那么如何获取一些不太明显的数字的二进制表示,例如-72或者-64?