умножение двоичных чисел



Автор WiNNeR задал вопрос в разделе Другие языки и технологии

Помогите с умножением двоичных чисел... и получил лучший ответ

Ответ от Котяра[гуру]
Вообще, умножение сложная операция, и специально для нее в компьютере имеется регистр, который называется «накапливающий сумматор» и с помощью последовательности сдвигов и сложений получается результат. Однако, мы умножаем по той же логике «в столбик» , поэтому так и будем действовать.
Умножение в двоичной системе, на практике, получается быстрее, чем сложение и вычитание, ибо единственная сложность — много складывать, но всё сложение можно производить в прямом коде, а это значит, что нет всяких там «случаев» , а все просто и понятно.
Определиться со знаком результата легко. Если знаковые разряды множителей были разными, то получится отрицательное число, то есть, «1» в знаке, иначе — «0». Если говорить еще более «заумно» , то над знаковыми разрядами совершается операция сложения по модулю, она же «строгое (исключающее) ИЛИ» , она же «XOR».
Попробуем умножить два числа: –13 и 23.
−1310 = 1000 11012 (ПК)
2310 = 0001 01112 (ПК)
умножение двоичных чисел
Обратите внимание на несколько фактов:
нули, содержащиеся между знаковым разрядом и первой единицей модуля числа писать нет смысла;
ряды из нулей (при умножении «0» на первый множитель) тоже писать не надо, вы ведь не пишите их при обычном умножении в столбик?
полученный результат может занимать памяти больше, чем множители.
В результате у нас получилось число 1 1001010112, однако, давайте приведем его к нормальному виду: 1 1 0010 10112. Но у нас нет записи числа в 10 цифр, только кратные байтам, то есть: 8 цифр, 16 цифр и так далее. В 8 это число уже никак не поместить, а вот в 16 в самый раз. Значит, что мы делаем? Мы добавляем нули между знаковым разрядом и модулем числа: 1000 0001 0010 10112. Я выделил зеленым цветом добавленные мною нули.
Однако, давайте для примера возьмем два таких числа, чтобы в двоичной записи их были нули в младших разрядах. Например, перемножим 10 и 40:
1010 = 0000 10102 (ПК)
4010 = 0010 10002 (ПК) умножение двоичных чисел
Обратите внимание. При умножении подобных чисел, мы выравниванием их так, дабы младшие разряды, заполненные нулями, оказались справа, а умножаем только значимые части. Нули же потом просто дописываем в конце, столько, сколько их было. Как и при обычном умножении в столбик
Нормализовав ответ, получаем: 0000 0001 1001 00002. Проверим: 256 + 128 + 16 = 40010. Ответ верен.
В принципе, это все знания, которые вам потребуются для умножения целых чисел в двоичном коде. О дробных поговорим чуть позже.

Ответ от Президент интернета[гуру]
умножаешь столбиком

Ответ от А[гуру]
Меня всегда удивляло, зачем это учить, если в принципе двоичные числа не могут быть дробными. Для представления дробного числа используют всякие алгоритмы представления в памяти в виде целого числа, просто с ним по-другому работают.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Помогите с умножением двоичных чисел...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*