Что такое w-битные слова? - PullRequest
2 голосов
/ 13 июля 2011
  1. Что такое w-битные слова в компьютерной архитектуре?
  2. Для двух 7-битных слов
1011001 = A 
1101011 = B , how does multiplication returns

10010100110011?

Разве в них не используется простое двоичное умножение? Пожалуйста, приведите пример.

Ответы [ 5 ]

3 голосов
/ 13 июля 2011

w-бит - это просто типичная номенклатура для n-битов, потому что w, как правило, сокращается от размера слова

2 голосов
/ 13 июля 2011

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

Multiplying
-----------
0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1

Adding
-----------
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 (w/ carry)

Первое добавление.Чтобы добавить, вы добавляете так же, как и в обычной арифметике, за исключением того, что следуйте приведенной выше таблице истинности:

  00000101 = 5
+ 00000011 = 3
--------------
  00001000 = 8

Как это работает, вы начинаете справа и работаете слева.1 + 1 = 0, но вы переносите 1 на следующий столбец.Таким образом, следующий столбец - 0 + 1, который будет 1, но поскольку вы перенесли еще один 1 из предыдущего столбца, на самом деле это 1 + 1, то есть 0.Вы несете 1 за следующий столбец, который является 1 + 0, но на самом деле 1 + 1 из-за переноса.Итак, 0 снова и, наконец, переместите 1 к следующему столбцу, который равен 0 + 0, но из-за нашего переноса становится 1 + 0, что составляет 1.Таким образом, наш ответ - 1000, то есть 8 в десятичном виде.5 + 3 = 8, поэтому мы знаем, что мы правы.

Далее, умножаем:

  00000101 = 5
x 00000011 = 3
----------
       101 = 5
+     1010 = 10
----------
      1111 = 15

Как это работает, вы умножаете верхнее число 00000101 на самую правую цифру во второмстрока.Итак, 00000011 - это наша вторая строка, а 1 - самая правая цифра, поэтому 00000101 раз 1 = 101.Затем вы помещаете заполнитель 0 в самый правый столбец под ним, как при обычном умножении.Затем вы умножаете наш главный оригинальный номер 00000101 на следующую цифру, идущую влево в нашей исходной задаче 00000011.Снова это производит 101.Затем вы просто добавляете 101 + 1010 = 1111 ... Это ответ

1 голос
/ 13 июля 2011

w-битные слова сами по себе ничего не значат. Предполагая, что значение w было предварительно определено в контексте, в котором используется "w-битное слово", тогда оно просто означает слово, которое состоит из w битов. Например:

A version of RC6 is more accurately specified as RC6-w/r/b where the word size
is "w" bits,  encryption consists of a nonnegative number of rounds "r," and
"b" denotes the length of the encryption key in bytes. Since the AES
submission is targetted at w=32, and r=20, we shall use RC6 as shorthand to
refers to such versions.

Таким образом, в контексте этого документа "w-битное слово" является просто 32-битным значением.

Что касается вашего умножения, я не уверен, что вы спрашиваете. Google подтверждает результат как правильный:

1011001 * 1101011 = 10010100110011

1 голос
/ 13 июля 2011

Если вы хотите умножить, вы просто делаете умножение так же, как с десятичными числами, за исключением того, что вы должны добавить переносы в двоичном виде:

         1011001
        x1101011
         -------
         1011001
        1011001.
       0000000..
      1011001...
     0000000....
    1011001.....
   1011001......
  --------------
  10010100110011
1 голос
/ 13 июля 2011

Да, это простое двоичное умножение:

>>> 0b1011001
89
>>> chr(_)
'Y'
>>> 0b1101011
107
>>> chr(_)
'k'
>>> ord('Y') * ord('k')
9523
>>> bin(_)
'0b10010100110011'
...