logo
АВС_Лек4_2013 / ИнтернентСсылкиАссемблерЛогика

Обобщение операций на булеву алгебру[править | править исходный текст]

Вместо одиночных битов мы можем рассмотреть векторы из фиксированного количества битов (в программировании их называют регистрами), например, байты. В программировании регистры рассматривают как двоичное разложение целого числа: , гдеN— количество битов в регистре.

Тем не менее, ничто не мешает рассматривать эти регистры именно как битовые векторы и проводить булевые операции покомпонентно (бит номер kзначения есть результат операции от битов номерkаргументов). Кстати, математически говоря, булевы операции распространяются таким образом на произвольнуюбулеву алгебру. Таким образом мы получаем операциипобитовогоИ, ИЛИ, НЕ, искл. ИЛИ и т. д. Как арифметические, данные операции не обладают хорошими свойствами за исключением побитового НЕ, которое для чисел вдополнительном кодесовпадает с вычитанием из −1 (~x == -1-x). Однако, они очень полезны в программировании.

2-адическая интерпретация[править | править исходный текст]

Целое число, записанное (в дополнительном коде) в бесконечный (в сторону положительных степеней двойки) двоичный регистр является естественным объектом для теории p-адических чиселпри . Множество целых 2-адических чисел (то есть произвольных бесконечных битовых последовательностей) может быть рассмотрено как булева алгебра точно так же как и множество значений битового регистра конечной длины. Все вышеперечисленные битовые операции оказываютсянепрерывными отображениями. Хотя практическое программирование не располагает регистрами бесконечной длины, это не мешает использовать данный теоретический факт вкриптографиидля создания быстродействующих алгоритмов шифрования.