-
- Поместится ли результат умножения в 30 разрядов? Будет ли
дублировать 30 разряд знаковый? Используем известное соотношение
модулей |a*b|=|a|*|b| Boвa(667 знак., 22.04.2023 07:41)
- Спасибо, обстоятельно. Dingo(63 знак., 25.04.2023 13:31)
- 1. Если перемножить два числа (24-бит-со-наком и 8-бит-со-знаком) в дополнительном коде с дополнением до двойки (two's complement, обычное представление в современных процессорах) результат умножения совершенно точно поместится в 32-бит-со-знаком, сомнений тут никаких. Т.е. s24 * s8 = s32 (гарантированно). RxTx(819 знак., 21.04.2023 23:38)
- Если у проца нет знакового умножэния, тупо смотрим на знаки, узнаём знак результата, переводим отрицательное в положытельное, умножаем и устанавливаем результат согласно известному знаку. - mse homjak(21.04.2023 17:19)
- то есть 31+31=
6263бита - m16(21.04.2023 11:25) - У людей (которые пользуются нормальными машинами) это делается так:
mul.ss (знаковое-знаковое) mul.uu (беззнаковое-беззнаковое) ну или
mul.su :-) - Kpoк(21.04.2023 10:51)
- не хватает мул.ус ещё, так себе машина - SciFi(21.04.2023 11:09)
- Обижаешь, да! MUL.US Wb,Ws,Wnd {Wnd + 1, Wnd} = Unsigned(Wb) * Signed(Ws) - Kpoк(21.04.2023 12:17)
- Нормальными - это какими? А без ассемблера можно? (я не боюсь его, но сращивать - ну его нафиг) - Dingo(21.04.2023 10:57)
- не хватает мул.ус ещё, так себе машина - SciFi(21.04.2023 11:09)
- Зачем 32х32? Проанализируйте случай 3х3 или 2х2, наверняка там
такая же закономерность, а перебор всех вариантов займёт половину
тетрадного листа. - SciFi(21.04.2023 10:25)
- Уже. Первые впечатления: Dingo(262 знак., 21.04.2023 10:38)
- -4*-4=16? То есть если сузить диапазон аргументов на единицу, этот случай уходит? - SciFi(21.04.2023 10:40)
- Уже. Первые впечатления: Dingo(262 знак., 21.04.2023 10:38)
- Поместится ли результат умножения в 30 разрядов? Будет ли
дублировать 30 разряд знаковый? Используем известное соотношение
модулей |a*b|=|a|*|b| Boвa(667 знак., 22.04.2023 07:41)