|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - перевод из десятичной в двоичную отрицательных чисел с дробной частью |
|
C/C++ - перевод из десятичной в двоичную отрицательных чисел с дробной частью
|
Пользователь Сообщения: 89 |
Профиль | Отправить PM | Цитировать
В задании нужно перевести из десятичной в двоичную систему исчисления отрицательное число с дробной частью. Проблема в том, что я не понимаю вот это:
как лучше представить число в двоичной СС: 1) отрицательное число пишется так же, как и положительное, но стоит "-" или бит знака? 2) или переводить число в дополненный код? и если переводить, то после инверсии куда прибавлять единицу? к дробной части или целой? 3) кому не сложно, переведите для примера число -125,635, желательно с объяснением. |
|
Отправлено: 19:18, 24-03-2014 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать meisme, Есть несколько способов представления дробных двоичных чисел. То же самое мы делаем с десятичными.
1. Фиксированная точка - мы храним в памяти целые числа в виде x = f*a, где f - наше число, a - точность, с которой мы сохраняем дробную часть. Чтобы получить дробное число f, берём из памяти целое x, делим на a. допустим a = 1000 123567 = 123.567 * 1000 ^ это пишем в память, т.к. в памяти только целые числа Хитрый ход: если взять `a' кратно 2^8 = 256, то десятичная точка всегда будет попадать на границу байта. В памяти мы будем видеть целую часть в неизменном виде (чтобы понять надо поиграться самому). XXXX = 123.567 * (2^16) = 123.567 * 65536 = 8098086 ^ это пишем в память, т.к. в памяти только целые числа В память запишется: 00 7B 91 26 Имейте в виду, что 123 - это 7B Храним в памяти целое число `x' и каким-то образом закодированное `a'. Например первые 11 бит - степень двойки для `a', остальное = число `x'. Подробнее можно прочитать здесь http://ru.wikipedia.org/wiki/%D0%A7%...81%D1%82%D0%B8 (там же есть примеры) |
Отправлено: 14:59, 22-04-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 6211
|
Профиль | Отправить PM | Цитировать meisme, и я рекомендую вот это почитать:
IEEE 754 - стандарт двоичной арифметики с плавающей точкой Представление чисел с плавающей точкой Генри С. Уоррен, Алгоритмические трюки для программистов |
Отправлено: 23:22, 22-04-2014 | #3 |
Сообщения: 3652
|
Профиль | Сайт | Отправить PM | Цитировать Цитата meisme:
Другой вопрос - что делать с дробными числами, для которых недоступны эти самые битовые операции? Можно объединить их в памяти с целочисленными форматами, подходящими по размеру: А дальше всё зависит от вашей реализации перевода в двоичный вид, пример - на ideone. P.S.: Ну и проверка размеров типов данных, объединенных в примере на ideone (ибо они зависят от компилятора/платформы) - здесь (эх, 43 days ago, а вроде недавно задавали...) |
|
------- Последний раз редактировалось Habetdin, 24-04-2014 в 02:02. Причина: P.S. Отправлено: 20:07, 23-04-2014 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Перейти в папку из чисел | WoW | Скриптовые языки администрирования Windows | 5 | 24-06-2012 00:18 | |
C/C++ - [решено] Перевод десятичных чисел в двоичные | Artesmann | Программирование и базы данных | 5 | 30-05-2011 19:41 | |
Delphi - Перевод из десятичной системы в факториальную. | Bars66 | Программирование и базы данных | 0 | 09-10-2010 10:03 | |
Нужен комп для работы в отрицательных температурах | osp2008 | Выбор отдельных компонентов компьютера и конфигурации в целом | 8 | 12-08-2010 12:57 | |
VBA - Перевод чисел в текст прописью | Goshar | Программирование и базы данных | 2 | 22-12-2007 16:00 |
|