Товар без переноски
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2017 г. ) |
Произведение без переноса двух двоичных чисел является результатом без переноса умножения этих чисел . Эта операция концептуально работает как длинное умножение. за исключением того, что перенос отбрасывается, а не применяется к более значимой позиции. Его можно использовать для моделирования операций над конечными полями . в частности умножение полиномов из GF(2)[ X ], кольцо полиномов над GF(2) .
Эта операция также известна как умножение XOR , поскольку сложение с отбрасыванием переноса эквивалентно исключающему или.
Определение
[ редактировать ]Даны два числа и , с обозначающие биты этих чисел. Тогда произведение этих двух чисел без переноса определяется как , с каждым битом вычисленный как исключающее или произведение битов входных чисел следующим образом: [1]
Пример
[ редактировать ]Рассмотрим a = 10100010 2 и b = 10010110 2 , со всеми числами, заданными в двоичном формате. Тогда их умножение без переноса — это, по сути, то, что можно было бы получить от выполнения длинного умножения, но игнорирования переносов.
1 0 1 0 0 0 1 0 = a ---------------|---|-------|-- 1 0 0 1 0 1 1 0|0 0 0 0 0 0 0 1 0 0 1 0 1 1 0|0 0 0 0 0 1 0 0 1 0 1 1 0|0 ------------------------------ 1 0 1 1 0 0 0 1 1 1 0 1 1 0 0 ^ ^
Таким образом, произведение a и b без переноса будет равно c = 101100011101100 2 .
Для каждого бита, установленного в числе a , число b сдвигается влево.
столько бит, сколько указано позицией бита в файле .
Все эти смещенные версии затем объединяются с использованием исключающего или,
вместо обычного сложения, которое использовалось бы для обычного длинного умножения.
Это можно увидеть в столбцах, обозначенных ^
, где регулярное сложение
приведет к переносу в столбец слева, чего здесь не происходит.
Умножение многочленов
[ редактировать ]Произведение без переноса также можно рассматривать как умножение полиномов. над полем GF(2) . Это потому, что эксклюзив или соответствует дополнению в этом поле.
В приведенном выше примере числа a и b соответствуют полиномам.
и продукт их
что и кодирует вычисленное выше число c .
Обратите внимание, как и
благодаря
арифметика в GF(2).
Это соответствует столбцам, отмеченным ^
в примере.
Приложения
[ редактировать ]Элементы GF(2 н ), т.е. конечное поле , порядок которого равен степени двойки , обычно представляются в виде полиномов в GF(2)[ X ]. Умножение двух таких элементов поля состоит из умножения соответствующих многочленов, с последующей редукцией по некоторому неприводимому многочлену который взят из конструкции поля. Если полиномы закодированы как двоичные числа, Умножение без переноса можно использовать для выполнения первого шага этого вычисления.
Такие поля находят применение в криптографии и некоторых алгоритмах контрольных сумм .
Реализации
[ редактировать ]Последние процессоры x86 поддерживают набор инструкций CLMUL и, таким образом, предоставляют аппаратную инструкцию для выполнения этой операции.
Это также часть RISC-V Bit-Manipulation ISA-расширения Zbc: умножение без переноса.
Для других целей можно реализовать приведенные выше вычисления в виде программного алгоритма. и многие библиотеки криптографии будут содержать реализацию как часть их арифметических операций с конечными полями.
Другие базы
[ редактировать ]Определение произведения без переноса как результата длительного умножения с отбрасыванием переноса легко применимо к основаниям, отличным от 2. Но результат зависит от базиса, который поэтому является существенной частью операции. Поскольку эта операция обычно используется на компьютерах, работающих в двоичном формате, двоичная форма, обсуждавшаяся выше, используется на практике.
Полиномы над другими конечными полями простого порядка имеют приложения: но рассматривать коэффициенты такого многочлена как цифры одного числа довольно редко, поэтому умножение таких полиномов не будет рассматриваться как умножение чисел без переноса.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Шей Герон (13 апреля 2011 г.). «Инструкция Intel по умножению без переноса и ее использование для вычисления режима GCM — ред. 2» . Интел .