representación binaria de concatenación de dos enteros

Jill blanco:

Digamos que tenemos dos variables int, Ay Bde la longitud de bits N < 16y M < 16, respectivamente. Queremos tener una nueva variable int Ctal que los Nbits más bajos contienen los bits de Ay los siguientes Mbits 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;

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=188199&siteId=1
Recomendado
Clasificación