我正在创建一个类 PackedUnsigned1616,它将两个未签名的短裤存储在一个 int 中,以及一个类 PackedSigned1616,它将两个签名的短裤存储在一个 int 中。我已经阅读了按位运算,但我仍然对如何处理有符号和无符号以及大于或小于短范围的值感到困惑(它们作为两个整数传入)。这是我到目前为止所得到的:
public final class PackedUnsigned1616 {
public final int field;
private static final int RIGHT = (2 << 15) - 1;
private static final int LEFT = ((2 << 31) - 1) ^ RIGHT;
public PackedUnsigned1616(int left, int right) {
field = (left << 15) | (right & RIGHT);
}
public int getLeft() {
return field >> 15;
}
public int getRight() {
return field & RIGHT;
}
}
这整个概念让我很困惑,所以如果你能对此有所了解,那将有很大帮助。