1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| FCT-Miasnik_YK |
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Юрий Репутация: 0 |
Задача!!!
Исходная информация: целое число, записанное в виде строки шестнадцатеричных цифр, которой может предшестововать знак. Задание: записать это число в дополнительном коде в виде строки шестнадцатеричных цифр. Примечание: можно считать, что первая цифра исходного числа не превосходит 7. пожалуйста, помогите! Я решил остальные задачи по Лабе, но с этой очень большие проблемы! Я окончательно запутался! Хелп помогите мне выкрутится!!! Буду всем очень благодарен, надеюсь не кто меня не посчитает халявщиком и тем кто не хочет учиться !:!help: |
![]() ![]() |
| Atos |
Сообщение
#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 Сообщение отредактировано: Atos - |
FCT-Miasnik_YK дополнительный код в виде строки 16-х цифр 5.10.2006 0:39
volvo var
n: string;
L: word;
begin
n := '75F… 5.10.2006 14:30
volvo Atos, в принципе, если работать со строками - то р… 5.10.2006 17:30
FCT-Miasnik_YK всем спасибо, волво прости за тему на другом форум… 6.10.2006 2:59![]() ![]() |
|
Текстовая версия | 7.11.2025 8:41 |