Страница 1 из 1

Дополнительный десятичный код

Добавлено: 28 янв 2016, 20:33
Valeryia
Нужна помощь в составлении кода, который будет вычислять дополнительный десятичный код

Re: дополнительный десятичный код

Добавлено: 29 янв 2016, 00:45
Romeo
Всё сравнительно просто, если судить по википедии.

Аналогично двоичному дополнительному коду, достаточно знать само число и максимально возможную принятую разрядность. Для вычисления кода нужно в цикле получить одна за одной цифры числа (посредством циклического вычисления остатка от деления на 10), для каждой цифры вычислить разность (9 - цифра), затем сложить получившиеся цифры снова в число и добавить к этому числу единичку.

Re: дополнительный десятичный код

Добавлено: 29 янв 2016, 06:17
Сионист
Romeo писал(а):Всё сравнительно просто, если судить по википедии.

Аналогично двоичному дополнительному коду, достаточно знать разрядность самого число и максимально возможную принятую разрядность. Для вычисления кода нужно в цикле получить одна за одной цифры числа (посредством циклического вычисления остатка от деления на 10), для каждой цифры вычислить разность (9 - цифра), затем сложить получившиеся цифры снова в число и добавить к этому числу единичку.
Вручную можно проще: если число отрицательно, то вычесть его модуль из числа, на единицу большего максимально представимого в данной разрядности. Хотя проще - не значит лучше. И проще ли такой алгоритм при программной, или аппаратной реализации? Сомневаюсь. + ещё надо работать с числом большей разрядности, а для неё опять придётся решать ту же задачу и разорвать этот порочный круг можно только длинной арифметикой без фиксированной разрядности. Человек другой арифметикой и не владеет, короткая у него - это на одну цифру, а разрядность определяется не типом, а самим числом, машина же устроена иначе.

Re: Дополнительный десятичный код

Добавлено: 29 янв 2016, 08:52
Romeo
Аппаратной реализации дополнительного десятичного кода точно нет, так что так будет действительно проще.

И того, если у нас исходное число x, а принятая максимальная разрядность p, то дополнительным десятичным кодом будет число: 10*p - abs(x).