IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> дополнительный код в виде строки 16-х цифр, помогите
FCT-Miasnik_YK
сообщение 4.10.2006 20:39
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Задача!!!
Исходная информация: целое число, записанное в виде строки шестнадцатеричных цифр, которой может предшестововать знак.
Задание: записать это число в дополнительном коде в виде строки шестнадцатеричных цифр.
Примечание: можно считать, что первая цифра исходного числа не превосходит 7.


пожалуйста, помогите! Я решил остальные задачи по Лабе, но с этой очень большие проблемы! Я окончательно запутался! Хелп помогите мне выкрутится!!! Буду всем очень благодарен, надеюсь не кто меня не посчитает халявщиком и тем кто не хочет учиться !:!help:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов
Atos
сообщение 5.10.2006 11:16
Сообщение #2


Прогрессор
****

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


Один из способов:
Цитата
Переписываем исходную последовательность битов числа справа налево до первой единицы, включая ее. Остальные биты заменяем их дополнениями (инвертируем).


Читаем строку справа налева. Если очередной символ '0', то ничего с ним не делаем. Иначе применяем к этому символу функцию FirstOne {вообще-то удобнее былобы её процедурой сделать, ну да ладно...} и затем ко всем ещё непрочитанным символам строки применяем функцию InvertHex.

Это всё для положительного числа. Для отрицательного легче: просто убрать минус, а к первому слева символу применить операцию Plus8 (этим самым заменяя старший бит с нуля на единицу)



Код

function InvertHex(ch:char):char;
begin
case ch of
'0': InvertHex:='F';
'1': InvertHex:='E';
'2': InvertHex:='D';
'3': InvertHex:='C';
'4': InvertHex:='B';
'5': InvertHex:='A';
'6': InvertHex:='9';
'7': InvertHex:='8';
'8': InvertHex:='7';
'9': InvertHex:='6';
'A': InvertHex:='5';
'B': InvertHex:='4';
'C': InvertHex:='3';
'D': InvertHex:='2';
'E': InvertHex:='1';
'F': InvertHex:='0';
end;
end;

function FirstOne(ch:char):char;
begin
case ch of
'1': FirstOne:='F';
'2': FirstOne:='E';
'3': FirstOne:='D';
'4': FirstOne:='C';
'5': FirstOne:='B';
'6': FirstOne:='A';
'7': FirstOne:='9';
'8': FirstOne:='8';
'9': FirstOne:='7';
'A': FirstOne:='6';
'B': FirstOne:='5';
'C': FirstOne:='4';
'D': FirstOne:='3';
'E': FirstOne:='2';
'F': FirstOne:='1';
end;
end;

function Plus8(ch:char):char;
begin
case ch of
'0': Plus8:='8';
'1': Plus8:='9';
'2': Plus8:='A';
'3': Plus8:='B';
'4': Plus8:='C';
'5': Plus8:='D';
'6': Plus8:='E';
'7': Plus8:='F';
end;
end;





{когда писал, ещё не видел ответа volvo smile.gif}

Сообщение отредактировано: Atos - 5.10.2006 11:17
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.06.2025 19:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"