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