Empacar dos pantalones cortos en un int, lidiar con negativo y positivo
-
30-10-2019 - |
Pregunta
Estoy haciendo una clase PackedUnsigned1616 que almacena dos pantalones cortos sin firmar en una int, y una clase Signed1616 que almacena dos pantalones cortos firmados en un int. He leído en operaciones bit a bit, pero todavía estoy confundido sobre cómo lidiar con firmados y sin firmar y valores que son más grandes o más pequeños que un rango corto (se pasan como dos INTS). Esto es lo que tengo hasta ahora:
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;
}
}
Todo este concepto me confunde mucho, por lo que si pudieras arrojar un poco de luz sobre él, eso ayudaría enormemente.
No hay solución correcta
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow