9 / 9 / 0
Регистрация: 08.04.2012
Сообщений: 219

Представить числа в форме с фиксированной точкой

31.01.2013, 16:28. Показов 8448. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Переводить из одной СС в другую умею, а вот как представить числа в форме с фиксированной точкой??
Число такое: +8.851Е+04
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2013, 16:28
Ответы с готовыми решениями:

Представить числа в форме с фиксированной и плавающей точкой, найти значения выражений A+B A-C
Помогите пожалуйста. A=-58.9; B=51.2; C=90.5 Представить числа в форме с плавающей и фиксированной точкой, найти значения выражений A+B,...

В файле записаны вещественные числа в форме с фиксированной точкой
В файле записаны вещественные числа в форме с фиксированной точкой. Преобразовать файл, представив каждое число в форме с плавающей точкой,...

Преобразовать числа в форме с фиксированной точкой в форму с плавающей
Помогите пожалуйста с задачей, в текстовом файле записаны вещественные числа в форме с фиксированной точкой. Преобразовать файл, представив...

3
Модератор
10231 / 5519 / 3373
Регистрация: 17.08.2012
Сообщений: 16,877
01.02.2013, 13:57
Shelty, можно в лоб. Денормализуем число:
+8.851Е+04=+0,0008851.
Не обращая внимания на знак числа, переводим это дело в двоичную форму, как обычно, целую часть с помощью деления на два, дробную часть - с помощью умножения на два.

Кстати, это тщательно замаскированная схема Горнера.

В Вашем случае целую часть переводить не надо, очевидно, получится 02. Дробная часть:
0,0008851 * 2 = 0,001702
0,001702 * 2 = 0,003404
0,003404 * 2 = 0,006808
0,006808 * 2 = 0,013616
0,013616 * 2 = 0,027232
0,027232 * 2 = 0,054464
0,054464 * 2 = 0,108928
0,108928 * 2 = 0,217856
0,217856 * 2 = 0,435712
0,435712 * 2 = 0,871424
0,871424 * 2 = 1,742848 (-1)
0,742848 * 2 = 1,485696 (-1)
0,485696 * 2 = 0,971392
0,971392 * 2 = 1,942784 (-1)
1,942784 ...
и так далее до достижения нужной точности перевода, обычно до 23 или до 53 знаков после появления первой единицы. Получили
0,00000000001101...
Далее, если необходимо, нормализуем число до вида 1.(...)*2N. Пример:
1100.10=1.1001*23 - так везде и пишется, хотя, надо было бы, наверное, писать 1100.10=1.1001*1011, то есть, ВСЁ в двоичной форме.
0.0000000111=1.11*28.
В Вашем случае будет +1.101...*2-8. Главное, знак не забыть приписать.
Далее, если необходимо, переписываем число в машинную форму по стандарту IEEE 754. Правда, здорово? Только вот беда, есть и подводные камни. К примеру, попытаемся перевести число 1,234567*1089 в двоичную форму... Денормализуем...
1234567800000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000.0
Это ж сколько раз эту гадость на два делить надо? Как же быть, вроде всё просто, но лень, однако...
Можно вот так.
Допустим, имеется число P=±D*10N. Требуется найти представление этого числа в виде P=±B*2G.
Представим число в виде P=±D*2X, где X - неизвестная и, скорее всего, нецелая, степень.
Чтобы значение P было равно исходному, необходимо, чтобы 2X=10N, и тогда X=N*log2(10).
Представим преобразованное в двоичную форму X в виде целой и дробной частей: X=I+F, где I - целая часть X.
Тогда P=±D*2I+F=±D*2I*2F.
Чтобы значение P было равно исходному, необходимо, чтобы B=D*2F, и, разумеется, G=I.
Теперь, если B - всё ещё десятичное, переводим его в двоичную форму. Вроде бы всё.
Но ещё: если получилось денормализованное число, нормализуем его.
Пример: 11110.11*23=1.111011*2-1.
Результат достигнут. Ну, может ещё IEEE754...

Всего Вам доброго.
0
9 / 9 / 0
Регистрация: 08.04.2012
Сообщений: 219
01.02.2013, 15:17  [ТС]
Cyborg Drone, сказать, что от описанного выше я в шоке, это ничего не сказать


Цитата Сообщение от Cyborg Drone Посмотреть сообщение
+8.851Е+04=+0,0008851.
думаю, что мне хватило бы вот этой информации. Правда, нашла ещё такой вариант: +8.851Е+04 = +88510. где правда?? и по аналогии +3.347Е-01 = +0,3347.
0
Модератор
10231 / 5519 / 3373
Регистрация: 17.08.2012
Сообщений: 16,877
01.02.2013, 16:10
Ну простите... По невнимательности плюс с минусом перепутал... Бывает же такое... Если бы я был внимательнее, я бы написал следующее:

Shelty, можно в лоб. Денормализуем число:
+8.851Е+04=88510.
Не обращая внимания на знак числа, переводим это дело в двоичную форму, как обычно, целую часть с помощью деления на два, дробную часть - с помощью умножения на два.

Кстати, это тщательно замаскированная схема Горнера.

В Вашем случае дробную часть переводить не надо, очевидно, получится 0. Целая часть:

88510 div 2 = 44255, 88510 mod 2 = 0
44255 div 2 = 22127, 44255 mod 2 = 1
22127 div 2 = 11063, 22127 mod 2 = 1
11063 div 2 = 5531, 11063 mod 2 = 1
5531 div 2 = 2765, 5531 mod 2 = 1
2765 div 2 = 1382, 2765 mod 2 = 1
1382 div 2 = 691, 1382 mod 2 = 0
691 div 2 = 345, 691 mod 2 = 1
345 div 2 = 172, 345 mod 2 = 1
172 div 2 = 86, 172 mod 2 = 0
86 div 2 = 43, 86 mod 2 = 0
43 div 2 = 21, 43 mod 2 = 1
21 div 2 = 10, 21 mod 2 = 1
10 div 2 = 5, 10 mod 2 = 0
5 div 2 = 2, 5 mod 2 = 1
2 div 2 = 1, 2 mod 2 = 0
1 div 2 = 0, 1 mod 2 = 1

Получили: 10101100110111110

Hужная точность перевода составляет обычно 23 или 53 значащих двоичных цифр. Далее, если необходимо, нормализуем число до вида 1.(...)*2N. В Вашем случае будет +1.010110011011111*216.

Остальной текст без изменений.

Если не придираться, то даже мой неправильный ответ содержит в себе правильный ответ на Ваш вопрос.

Тем не менее, ещё раз извините за ошибку.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2013, 16:10
Помогаю со студенческими работами здесь

Содержит ли строка запись одного десятичного числа со знаком в форме с фиксированной десятичной точкой
2. Дана строка. Написать программу, распознающую, содержит ли строка запись одного десятичного числа со знаком в форме с фиксированной...

В строке записано вещественное число в форме с фиксированной точкой. Преобразовать строку, записав в нее округленное до целых значение данного числа.
помогите пожалуйста!!!! В строке записано вещественное число в форме с фиксированной точкой. Преобразовать строку, записав в нее...

Преобразование чисел с плавающей точкой в числа с фиксированной точкой
Здравствуйте, подскажите пожалуйста как заменить вещественные числа с плавающей точкой, числами округленными до десятых, записанными в...

Найти минимальное из вещественных чисел в форме с фиксированной точкой
Не могу осуществить функцию сравнения вещественных чисел с фиксированной точкой нужна функция нахождения этого минимума Добавлено...

Нужно составить алгоритм суммирования двух байтных чисел в форме с фиксированной точкой.
Нужно разработать алгоритм суммирования двух байтных чисел в форме с фиксированной точкой... Добавлено через 1 минуту Может кто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru