ネガティブとポジティブに対処する2つのショートパンツを1つのINTに梱包する

StackOverflow https://stackoverflow.com/questions/5930166

質問

1つのINTに2つの署名されていないショートパンツを保存するクラスPackEdunSigned1616と、2つの署名されたショートパンツを1つのINTに保存するクラスパックに詰め込まれたクラスを作成しています。私はビットワイズ操作を読み上げましたが、私はまだ、署名と署名されていないものと、短い範囲よりも大きいか小さい(それらは2つの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;
}

}

この概念全体が私を非常に混乱させているので、あなたがそれに少し光を当てることができれば、それは非常に役立つでしょう。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top