> Это зачем? Чтобы профакать очень серьезный % емкости абсолютно ни на что?В смысле? я чет не понял, проясните о какой емкости идет речь?
Я вообще-то про регистровую память говорил с фиксированной емкостью в битах (32 бита - еах к примеру) и как была она 32 бита, так и остается.
А суть, и собственно НЕОБХОДИМОСТЬ "третьего" состояния бита информации, в том, что - при использовании "полной позиционной двоичной системы счисления" не работает "правило лидирующих незначимых нулей".
Пример:
Допустим размер регистра - 8 бит. В обычной (используемой нами) неполной двоичной системе счисления значение регистра 00000100 (4) не отличается от 100 (4), так как это два одинаковых представления числа, с применением правила лидирующих незначимы нулей. А вот в полной двоичной системе счисления это не то чтобы два разных числа, это семь разных представлений семи разных чисел, 0 (0), 00 (2), 100(10), 0100 (18), 00100 (34), 000100 (66), 00000100 (258) (направление битов <--, число в скобках - десятичное обычное представление числа). ~~~Ого в восьми битах число 258 О_о.~~~
Вопрос, как их отличать если наш регистр если не хранит значение бита как 1, то хранит заведомо 0?
Как по мне, есть три решения:
1) Придумать что-то вроде динамического регистра. Это отдельная тема для рассуждений.
2) Если оставить фиксированный размер регистра, то необходимо ввести новый регистр "регистр длины".
К примеру:
Регистр А (обычный регистр) содержит значение 00000100, а регистр Б (регистр длины, размер в битах у обоих регистров одинаковый) содержит значение 00100000. Это своего рода плавающая единица в роли терминатора (ограничителя числа).
А - 00000100
Б - 00100000
истинное значение регистра А - 000100 (66)
3) Придумать "третье" состояние (незначимое значение) бита - допустим *. Тогда регистр А будет содержать следующее значение.
А - **000100 (66)
И это не "троичность" как может показаться, это аппаратное распознавание, или динамический регистр (хотя я его представляю немного иначе)
> Это как ни странно используется в двоичных системах.
> И им даже пользуются. Но совсем не так как вы себе возомнили.
Ну да, но не в качестве значения бита ведь. Если я буду использовать это состояние в качестве значения бита, то получиться троичная система счисления.
> Двоичная система прекрасна тем что это математика упрощенная до предела.
А зачем тогда отказались от полной мощности представления чисел? Почему после цифры 9 идет не последовательность 00, а 10 ? Кто ответит на этот вопрос? Кто и когда решил лишить человечество полной мощности представления чисел "упрощая до предела арифметику"?
> Сильнее упростить нельзя. И таких
> микро-оптимизаций много где получается.
Предлагаю, просто реализуйте сумматор (однобитовый фулл) для "полной двоичной системы счисления" и сравните. Я вот пытался, и сравнивал количество использованных логических элементов, всегда выходило больше. Ну и зачем он нам такой? А теперь фокус, сдвиньте эту "полную двоичную систему счисления" на два значения вот так:
Было:
0 - 0 (десятичное представление числа)
1 - 1
00 - 2
01 - 3
......
Стало после сдвига:
0 - 2
1 - 3
00 - 4
01 - 5
....
И сново попробуйте реализовать сумматор :)