Поместится ли результат умножения в 30 разрядов? Будет ли
дублировать 30 разряд знаковый? Используем известное соотношение
модулей |a*b|=|a|*|b| Пусть а имеет 24 разряда, b имеет 8 разрядов.
Число со знаком разрядности N укладывается в интервал [-2N-1.. 2N-1-1].
Рассмотрим 4 варианта
1) а = -223 b = -27 a*b = 230
2) а = -223 b = [-27-1..-27-1] |b|<= 27-1 |a*b| <= 223*(27-1) = 230-223
3) а = [-223-1..223-1] |a|<=27 - 1 b = -27 |a*b| <= 27*(223-1) = 230-27
4) а = [-223-1..223-1] |a|<=27-1 b = [-27-1..-27-1] |b|<= 27-1 следовательно |a*b| <= (27-1)*(223-1) = 230-27-223 +1 < 230
Таким образов в случае когда а = -223 b = -27старший бит положителен, а 30 бит равен 1.
В остальных случаях число укладывается в 29 разрядов, а 30 бит равен знаковому.