Переводим данные-не числа в данные-числа, их переводим из двоичной в троичную ... n-ричную систему счисления.
- - - Добавлено - - -
Прям. Три уровня намагниченности, например.
Вид для печати
и полностью теряем выиграш от применения троичных ячеек памяти
ну спасибо :v2_dizzy_facepalm:
- - - Добавлено - - -
про без избыточности я написал русским языком
- - - Добавлено - - -
объясню в картинках
некоторая проблема с троичной системой
как должно бытьКод:000 - 00
001 - 01
010 - 02
011 - 10
100 - 11
101 - 12
110 - 20
111 - 21
22 - не используемая комбинация (избыточность) = неиспользуемая память = меньший объем накопителя
на примере четверичной системы
Код:00 - 0
01 - 1
10 - 2
11 - 3
хотя именно в троичную систему
целое число битов видимо никогда не впишется
тк число комбинаций никогда не бывает даже четным
не то что кратным степени двойки
Код:1 3
2 9
3 27
4 81
5 243
6 729
7 2187
8 6561
9 19683
10 59049
11 177147
12 531441
13 1594323
14 4782969
то есть двоичный результат будет только с последовательным доступом
для четверичной системы
это же блоки по 2 бита
чота микроконтроллеры на флешках с mlc и tlc про это не знают
хотя как видим
они не осилили систему не кратную степени двойки
и вместо троичной сразу заюзали четверичную систему
хотя например можно было бы писать весь блок\сектор в троичном виде
все равно по байтно не читается
а терять только на последнем числе
- - - Добавлено - - -
конечно если предполагается разделение на блоки
для произвольного доступа
можно считать данные числом
например 2^256 (32 байт) (32 пушо калькуляторы не переваривают большие степени типа 32768 а те что переваривают не имеют логарифма по основанию 3)
и переводить в троичное число 3^162 (20,25 трайт)
и то есть последний 21 трайт будет использоваться только на 25%
- - - Добавлено - - -
но все таки хотелось бы алгоритм
который бы переводил произвольное число двоичных данных в троичные \ n-ричные
Любая цифра и любая комбинация цифр из заданной системы счисления являются числами. Любое число можно выразить в любой другой системе счисления. Избыточность выбранной разрядной сетки зависит только от количества чисел, которые нам нужно в ней представлять для данной задачи.
Что не отменяет удобства определённых систем счисления для определённых задач и определённых физических носителей информации.
отлично нам нужно представить двоичное число
весом 300MB в троичной системе
чтоб записать его на носитель с троичными ячейками
как это сделать?
я даже не могу рассчитать сколько на это нужно трайтов
тк калькуляторы не осиливают
а сократить расчет я не могу (просто я плохо уметь сокращать)
А текст давайте кодировать в RADIX-50!
Вы в школе логарифмы ещё не проходили что-ли?
- - - Добавлено - - -
300MB число это 300*1024*1024*8=2516582400 бит, т.е. максимальное число 2^2516582400
3^x=2^2516582400
x=log3(2^2516582400)
x=2516582400*log3(2)
x=2516582400*ln(2)/ln(3)
x=1587786713,4742669285537769842778, т.е. 1.587.786.714 троичных цифр.
ё-моё, при чём тут вообще железо?
система счисления нужда для представления чисел в человекоудобном виде
двоичная система для человека неудобна, потому что запись слишком длинная получается
но и наращивание кол-ва цифр тоже начинает с определённого момента скорей мешать
потому что крайне неудобно будет считать в уме, особенно в обратном порядке
уже 16-ричная система вызывает затруднения, когда нужно сдвинуть адрес немного
а уж с этой хренью и подавно вытекут мозги через уши