Cómo multiplicar números de punto fijo de diferente formato

1

Suponga que tengo dos números de punto fijo de 16 bits en el siguiente formato que se multiplica.

Q3.13 * Q10.6

¿Cuál es la forma correcta de multiplicarlos, es decir, si desplazo a la derecha el primer número para alinearlo como Q10.6 o hacia la izquierda el segundo para alinearlo como Q3.13? En ambos casos perderé datos.

Puede ser la forma correcta de ponerlos en 32 bits y luego cambiarlos y luego multiplicarlos. En este caso, no se pierden datos, pero el resultado será de 64 bits después de la multiplicación.

¿Qué formato Q tiene el resultado después de multiplicar Q3.13 y Q10.6?

    
pregunta quantum231

1 respuesta

6

Esto no es particularmente diferente de multiplicar dos números de punto fijo con el mismo formato. Necesitas hacer una multiplicación que conserve los bits más significativos, luego cambiar el punto binario al formato de salida deseado.

Entonces, haz un 16x16 = > Multiplicación de 32 bits. El punto binario está entonces en la posición 13 + 6 = 19, por lo que tiene un número de formato Q13.19.

Suponiendo que desea una salida en formato Q10.6, se desplaza hacia la derecha un 13, opcionalmente compruebe si hay un desbordamiento y luego toma los 16 bits inferiores.

    
respondido por el pjc50

Lea otras preguntas en las etiquetas

Comentarios Recientes

Punto flotante, siempre el segundo argumento. La fórmula que se multiplicará se basa en la forma de abstracción inversa de un número. Los dígitos individuales aparecen en el numerador y cero el denominador. El número que aparece primero es el número fraccionario (por unidad) para una cantidad de unidades. La precisión correcta es 8 ^ 12. Suponga que divide un número ordenado de patrones juntos desde la izquierda y lo genera como sigue:> int *>% meriddith a = a + a * 3 o a * 2 + 2 * a * 864758079482207561018280305451494928454444954164687856331686673299313757613345446518 Lees verder