![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
FCT-Miasnik_YK |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Юрий Репутация: ![]() ![]() ![]() |
Задача!!!
Исходная информация: целое число, записанное в виде строки шестнадцатеричных цифр, которой может предшестововать знак. Задание: записать это число в дополнительном коде в виде строки шестнадцатеричных цифр. Примечание: можно считать, что первая цифра исходного числа не превосходит 7. пожалуйста, помогите! Я решил остальные задачи по Лабе, но с этой очень большие проблемы! Я окончательно запутался! Хелп помогите мне выкрутится!!! Буду всем очень благодарен, надеюсь не кто меня не посчитает халявщиком и тем кто не хочет учиться !:!help: |
![]() ![]() |
Atos |
![]()
Сообщение
#2
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Один из способов:
Цитата Переписываем исходную последовательность битов числа справа налево до первой единицы, включая ее. Остальные биты заменяем их дополнениями (инвертируем). Читаем строку справа налева. Если очередной символ '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 ![]() Сообщение отредактировано: Atos - 5.10.2006 11:17 |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 19:27 |