我正在创建一个名为PackedUnsigned1616的类,它可以将两个无符号短整数存储在一个整数中,还有一个名为PackedSigned1616的类,它可以将两个有符号短整数存储在一个整数中。我已经阅读了位运算的相关内容,但仍然不清楚如何处理有符号和无符号以及大于或小于short范围的值(它们作为两个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;
}
整个概念让我感到很困惑,如果您能稍微解释一下,那将非常有帮助。
(2<<15)-1
,因此如果您使用大于该数字的数字调用构造函数,应该发生什么? - Tyler