The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Проект по производству открытого процессора, совместимого с Z80"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Проект по производству открытого процессора, совместимого с ..." +/
Сообщение от Sw00p aka Jerom (?), 02-Май-24, 14:30 
> Это зачем? Чтобы профакать очень серьезный % емкости абсолютно ни на что?

В смысле? я чет не понял, проясните о какой емкости идет речь?
Я  вообще-то про регистровую память говорил с фиксированной емкостью в битах (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
....


И сново попробуйте реализовать сумматор :)

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Проект по производству открытого процессора, совместимого с Z80, opennews, 30-Апр-24, 11:52  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру