Продолжаем выковыривать изюм из лекций. Самое красивое, интересное, бесполезное :) В этот раз речь про очень простой, очень красивый и неожиданный способ представления чисел, подававший большие надежды где-то в 60-х, но благополучно померший впоследствии: не смогли преодолеть критический недостаток. Но сама идея!
А идея такая:
Comments 17
Да, и еще... Алгоритм деления существует? И есть ли вообще однозначный результат такой операции?
ЗЫ А почему g, а не r?
Reply
Но точно такое же ограничение накладывает любое представление ограниченной разрядности.
Алгоритмов деления в те времена было придумано много, но я ни одного не знаю :) Там всё действительно сложно. Если бы реализовать деление, то можно было бы привести и к стандартному 10-му или 2-му виду.
Однозначный результат, конечно, есть. Возможно преобразовать делимое и делитель к "нормальной" форме, а потом преобразовать результат к "остаточной" -- вот тебе и однозначный результат.
Но преобразование к нормальной форме это решение системы уравнений в целых числах... И это тот ещё геморрой. Общей формулы, видимо, просто нет. Как говорил мне преподаватель, которому я помогаю вести лабы и который поручил мне провести эти лекции, есть решение в частном случае: для двух специально подобранных взаимно простых чисел. Вроде бы 2n-1 и 2n+1. Но я не вдавался в подробности.
Как-то g пришло в голову первым :)
Reply
А вообще вещь занятная... немного поломал голову по этому поводу :)
Reply
Да, вещь немного "вскрывающая мозг". Позиционные системы счисления настолько привычны, что кажутся безальтернативными. Ну, тупые римляне не знали, но что с них взять... А тут -- такое.
Reply
те если нам нужно представлять числа порядка 32 бит в двоичной позиционной, то можно использовать 2^16+1, 2^16-1.
перевод (и другие унарные) можно делать по таблице...
Reply
Про таблицу я не понял, объясни.
Reply
Время для неё уже солидно упущено, так что широкомасштабные практические реализации вряд ли будут. Но вот чтобы ложное ограничение о единственности и истинности позиционного представления не довлела в головах молодых инженеров...
Reply
Reply
Reply
Reply
Да, эта мысль мне тоже приходила в голову, но действительно нужно как-то определить, когда вычет 53, записанный в виде вычетов 2/5/7 перейдёт через 53.
И как-то не понятно, как этого добиться. Из-за той же "распределённости", которая позволяет складывать по частям, всё вместе не собрать.
Reply
Leave a comment