2014-11-18 3 views
1

Я немного запутался в том, как мы выполняем умножение комплемента подписанного 2.2-битное умножение двоичного кода

  10 1101  -19 
     x 11 0001  x -15 
     ---------------- ------ 
      101101   285 
     000000 
     000000 
     000000 
     101101 
    101101 
    ---------------- 
    100010011101 

Добавление всех расчетов, которые я получаю «100010011101», как говорится, не 285 подписанными, почему?

ответ

1

Вы делаете неподписанную арифметику. Для этого двоичного дополнения, вы должны рассматривать числа как имеющие бесконечно повторяющиеся знак цифры:

  ...1111101101 
      ...1111111001 
------------------------- 
      ...1111101101 
      ...0000000000 
      ...0000000000 
     ...0000000000 
     ...1111101101 
     ...1111101101 
     ...1111101101 
    ...1111101101 
    ...1111101101 
    ...1111101101 
      : 
------------------------- 
     ...0000000100011101 

И вам нужно продолжать процесс до тех пор, пока не достигнет фиксированной точка (где дополнительные биты, вычисленной все будет то же самым.) Оказывается, это будет происходить к тому времени, когда вы произведете n + m бит вывода (где n и m - это величины умножителей в битах), поэтому это легко ограничить.

+0

Я смущен, как вы пришли к этому ответу. Вы сделали дополнительное право? Я понимаю, что бит 0 - 4. Для бит 5 у нас есть 2, поэтому мы пишем 0 и переносим 1 в бит 6. Бит 6 имеет 3 единицы + 1 переносится вперед = 4, так что теперь мы делаем? –

+0

@MaTaKazar: 4 - 100 в двоичном формате, поэтому результат равен 0 и нести 10. Вы можете думать об этом как перенос «2» в следующий столбец или перенос бит вверх по двум столбцам - результат получается одинаковым , –

0

Если вы хотите получить правильный результат, вы должны сделать sign extent цифр в два раза больше бит.

     111111101101   
       x  111111110001 
         ------------ 
         111111101101 
         000000000000 
        000000000000 
        000000000000 
        111111101101 
        111111101101 
       111111101101 
       111111101101 
       111111101101 
       111111101101 
      111111101101 
     +  111111101101 
      ---------------------- 
      000000000000000100011101 
0

Продлить биты до полной ширины и усечение

Вот 4 бит пример:

1110 -2 
* 1111 -1 
------ -- 
    1110 
    110 
    10 
+ 0 
------ 
    0010 2 

Теперь повторить пример с использованием 8 бит, если множительной байт, 16 бит, если множительной шорты

Смежные вопросы