Jill blanco:
Digamos que tenemos dos variables int, A
y B
de la longitud de bits N < 16
y M < 16
, respectivamente. Queremos tener una nueva variable int C
tal que los N
bits más bajos contienen los bits de A
y los siguientes M
bits contienen los bits de B
. (Suponiendo que todas las variables son 32 bits de largo y poco endian).
En mi solución que poco engañado mediante el uso de cadenas binarias en su lugar:
int a = 65535;
int b = 65;
String cStr = Integer.toBinaryString(b) + Integer.toBinaryString(a);
int c = Integer.parseInt(cStr, 2);
Pero, ¿cómo lo hago usando operadores de bits?
Ejemplos:
A=1, B=1 (N=1, M=1 resp.) then C = 11 A = 11000011010100, B = 101100 (N=14, M=6 resp.) then C = 10110011000011010100
rghome:
Y Java:
c = b << 16 | a;
Pero si desea cambiar el número exacto de bits:
c = b << (32 - Integer.numberOfLeadingZeros(a)) | a;