Imballando due pantaloncini in un int, affrontando negativo e positivo
-
30-10-2019 - |
Domanda
Sto realizzando una classe Packedunsign1616 che memorizza due pantaloncini non firmati in un int e una classe packsigned1616 che memorizza due pantaloncini firmati in un int. Ho letto sulle operazioni bitwise, ma sono ancora confuso su come affrontare i valori firmati e non firmati e più grandi o più piccoli di un intervallo di un corto (sono passati come due INT). Ecco cosa ho finora:
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;
}
}
L'intero concetto mi sta confondendo molto, quindi se potessi farci un po 'di luce su di esso, questo sarebbe enormemente.
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow