Tengo dos variables integrales a
y b
y una constante s
resp. d
. Necesito calcular el valor de (a*b)>>s
resp. a*b/d
. El problema es que la multiplicación puede desbordarse y el resultado final no será correcto, aunque a*b/d
podría caber en el tipo integral dado.Evitar el desbordamiento en la multiplicación de enteros seguido por la división
¿Cómo podría resolverse de manera eficiente? La solución directa es expandir la variable a
o b
a un tipo integral más grande, pero puede no haber un tipo integral más grande. ¿Hay alguna forma mejor de resolver el problema?
Debo inferir que 'd' siempre es' 1 << s'. ¿Es eso cierto? –
Sí, es cierto. –
Su mejor opción es expandirse a un tipo integral más grande. –