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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Valeryia
Сообщения: 2
Зарегистрирован: 28 янв 2016, 20:27

Нужна помощь в составлении кода, который будет вычислять дополнительный десятичный код
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Всё сравнительно просто, если судить по википедии.

Аналогично двоичному дополнительному коду, достаточно знать само число и максимально возможную принятую разрядность. Для вычисления кода нужно в цикле получить одна за одной цифры числа (посредством циклического вычисления остатка от деления на 10), для каждой цифры вычислить разность (9 - цифра), затем сложить получившиеся цифры снова в число и добавить к этому числу единичку.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Romeo писал(а):Всё сравнительно просто, если судить по википедии.

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

Аппаратной реализации дополнительного десятичного кода точно нет, так что так будет действительно проще.

И того, если у нас исходное число x, а принятая максимальная разрядность p, то дополнительным десятичным кодом будет число: 10*p - abs(x).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить