9 / 9 / 0
Регистрация: 08.04.2012
Сообщений: 219
|
|
Представить числа в форме с фиксированной точкой31.01.2013, 16:28. Показов 8448. Ответов 3
Метки нет Все метки)
(
Переводить из одной СС в другую умею, а вот как представить числа в форме с фиксированной точкой??
Число такое: +8.851Е+04
0
|
31.01.2013, 16:28 | |
Ответы с готовыми решениями:
3
Представить числа в форме с фиксированной и плавающей точкой, найти значения выражений A+B A-C В файле записаны вещественные числа в форме с фиксированной точкой Преобразовать числа в форме с фиксированной точкой в форму с плавающей |
Модератор
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, сказать, что от описанного выше я в шоке, это ничего не сказать
![]()
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
|
01.02.2013, 16:10 | |
Помогаю со студенческими работами здесь
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 занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
|