Как сделать два дополнительных умножения и деление целых чисел?
Я прочитал этот пост о бинарном умножении, используя два дополнения. но мне это не очень понятно. Даже мне трудно понять статью wiki. Я хочу знать, как идти о вычислении умножений отрицательных чисел:
eg: -1 with -7 should give 7.
A 4-bit, 2 complement of -1 is : 1111
A 4-bit, 2 complement of -7 is : 1001
будет полезно пошаговый способ вычисления умножения. Никакой статьи я не встречал разговоры о разделении. Как подойти к этому?
Ответы
Ответ 1
шаг 1: sign extend
оба целых числа в два раза больше бит. Это безопасно, хотя это может не всегда быть необходимым.
for 4-bit --> 1111, you would extend as 1111 1111
for 4-bit --> 0111,you would extend as 0000 0111
шаг 2: сделать элементарное умножение
sep 3: возьмите правильное количество бит результата из наименее значимой части результата.
например: после умножения вы получаете что-то вроде 0010011110
, чтобы взять последние 8 бит i.e 10011110
Позвольте мне проиллюстрировать пример, который вы указали: -1 X -7
в 4-битном представлении
1111 1111 -1
x 1111 1001 x -7
---------------- ------
11111111 7
00000000
00000000
11111111
11111111
11111111
11111111
11111111
----------------
1 00000000111 ---> 7 (notice the Most significant bit is zer``o)
-------- (last 8-bits needed)
вы можете получить более подробную информацию здесь;
для деления: конвертировать в положительный и после вычисления настроить знак. Я оставлю это как упражнение, но вы можете сослаться на эту страницу.
Ответ 2
Хорошо, посмотрим, смогу ли я сделать это достаточно просто для вас.
Два дополнения:
IFF (если и только если) у вас есть отрицательное число, сначала положите его в положительную форму. Для простоты все числа будут 6 бит. Предел бит ограничит количество ваших чисел. Кроме того, размер не имеет значения.
Некоторые числа, преобразованные в их положительную двоичную форму
-7: 000111
16: 010000
-22: 010110
1: 000001
Теперь для -7 и -23 ТОЛЬКО мы сделаем два дополнения. Поэтому мы переворачиваем биты (1 → 0 & 0 → 1), а затем добавляем один.
000111
Goes to the complement + 1
111000
+ 1
=111001
И для 22
010110
Goes to the complement + 1
101001
+ 1
=101010
Затем вы просто добавляете их вместе, как и любой другой номер.
И похоже, что кто-то еще уже рассмотрел часть умножения, поэтому я не буду повторять это.
Ответ 3
кто-нибудь может мне помочь, пожалуйста...
- Выполните следующее умножение двух 4-битных чисел, дополняющих 2-е (самый левый бит - знаковый бит), используя улучшенную версию аппаратного обеспечения умножения (рис. 3.5 на стр. 181), и используйте десятичную арифметику для проверки ваших результатов. (1) 0110 (умножение) x 1001 (множитель) (2) 0110 (умножение) x 0111 (множитель)