|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.04.2020, 19:13 | #1 |
Пользователь
Регистрация: 11.05.2019
Сообщений: 21
|
Перевод отрицательного десятичного числа в двоичное число
Здравствуйте, как известно, отрицательные десятичные числа представляются с помощью дополнения до двух.
У меня есть код, который читает с файла число и переводит положительное число в десятичное. Код:
|
09.04.2020, 23:03 | #2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,063
|
I am not a wizard, I am just learning.
|
10.04.2020, 11:27 | #3 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,586
|
"До двух" тут не при чём. Точнее, до 2^N, где N - разрядность слова. Т.е. если мы имеем дело, к примеру, с 8-битным словом, то -1 представится как дополнение до 2^8 = до 256, т.е. 255. А как же тогда представить 255? - спросят недалёкие. А никак. В 8-битном знаковом слове нет 255, все значения - от -128 до +127.
Алгоритм простой. Из абсолютной величины "пытаемого" числа вычитаем 1 и затем инвертируем все биты. Пример: представим число -1 в доп. коде (для простоты ограничимся 8 битами) |-1| = 1 = 00000001 -> 00000000 -> 11111111 это правильный ответ. Попробуем то же с нулём. 00000000 -> 11111111 -> 00000000 и это тоже правильный ответ . Нуль и в прямом, и в дополнительном коде остаётся нулём. Только не понимаю, зачем такие трюки делать программою - это делается автоматически на уровне команд процессора. Смысл имеет сделать это на бумаге в клеточку - для понимания что такое доп. код, как у нас выше. А городить огород вместо m=-n ... Не разумею... Последний раз редактировалось digitalis; 10.04.2020 в 22:36. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод десятичного числа в двоичное | Max140285 | Помощь студентам | 2 | 24.05.2017 16:37 |
Перевод десятичного числа в двоичное | Max140285 | Фриланс | 5 | 19.05.2017 20:39 |
перевод отрицательного десятичного числа в восьмеричную | tani455 | Мультимедиа в Delphi | 5 | 10.10.2013 15:45 |
C++. Перевод десятичного числа в двоичное | Panterka | Помощь студентам | 15 | 12.12.2007 15:04 |