que tiene dos cortos de 16 bits (S1 y S2), y yo estoy tratando de combinarlos en un solo número entero de 32 bits (i1). De acuerdo con la especificación que estoy tratando, s1 es la palabra más significativa, y s2 es la palabra menos significativa, y la palabra combinada parece estar firmada. (Es decir, el bit superior de S1 es el signo.)forma más limpia de combinar dos cortos a un int
¿Cuál es la manera más limpia para combinar S1 y S2?
me imaginé algo así como
const utils::int32 i1 = ((s1<<16) | (s2));
haría, y parece que funciona, pero estoy preocupado por la izquierda que cambia de un corto por 16.
Además, estoy interesado en el idea de usar un sindicato para hacer el trabajo, cualquier idea sobre si esta es una idea buena o mala?
En el caso de los pantalones cortos, no estoy seguro de que sea necesario. El estándar tiene: "Los operandos deben ser de tipo integral o de enumeración y se realizan promociones integrales. El tipo de resultado es el del operando izquierdo promovido". Por lo tanto, el corto se promocionará a un int implícitamente. –
Huh. No lo sabía, creo que es porque siempre soy demasiado paranoico con los tamaños de datos. Gracias por el puntero. –
¡Es bueno ser paranoico porque definitivamente se requeriría el elenco en plataformas con un int de 16 bits! –