Другие языки программирования и технологии

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

Но что там сложного? Я никак не могу понять. Может быть кто нибудь обьяснит в чём сложность? Одно число делишь, либо складываешь с другим. Что сложного не понимаю? Ну используй несколько ядер для обработки каждого такого числа. В чём проблема? Не понимаю.
Сергей Озеров
Сергей Озеров
3 214
Абсолютно с вами согласен.
Арифметические операции над числами с плавающей запятой - ОЧЕНЬ просты. Я бы даже сказал, что они элементарны. Имеется значительно более сложные операции типа инструкций SSE с разными номерами.

Если же сравнить их с операциями над числами с фиксированной запятой, то операции с плавающей сложнее хотя бы потому, что в числах с плавающей запятой есть 2 элемента: мантисса и экспонента. Оба этих элемента при всех операциях должны изменяться согласованно, что и требует дополнительных действий от процессора.
Евгений Ковыгин
Евгений Ковыгин
11 112
Лучший ответ
Сергей Озеров Но это ведь только в двоичной системе так происходит? Если записать число в обычной десятичной форме, то число будет длинным, но зато проще обрабатывать его будет.
Сложность в данном случае - количество необходимых унарных операций для действий с вещественными числами в сравнении с такими же действиями в отношении целых чисел. Операции с целыми числами происходят практически мгновенно и на аппаратном уровне. Вещественные числа занимают больше ячеек памяти и требуют либо множества целочисленных операций на уровне процессора, либо пересылки в специальный вычислительный ускоритель и получения результата операции из него.
Упомянутая автором вопроса многоядерность тоже никаким боком никого не спасает, потому что все операции производятся последовательно.
Павел Мотырев
Павел Мотырев
59 973
Попробуй вручную - без компьютеров и калькуляторов - от 1.2e10 отнять 3.4e-10 - может быть, тогда дойдёт.
Сергей Озеров Что сложного? По циферке отнимай, и следи за нехваткой (переполнением). В десятках будут десятки а в сотнях сотни, в любом случае.
Сергей Озеров Цифр то всего 9!А не 10.
Виталий Малиновский Не показательный пример.
1.2e10 - 3.4e-10 почти всегда равен 1.2e10.
Потому что компьютер не работает с числами. Он работает с цепочками битов, в которые перекодируются числа, и кодировка чисел с плавающей точкой во много раз сложнее кодировки целых чисел, и операции, скажем, по их сложению поэтому тоже во много раз сложнее, так как прямое сложение битов, как это делается с целыми числами, в этом случае невозможно. Практически это сейчас не столь важно, как когда-то, так как для работы с числами с плавающей точкой в современных микропроцессорах стоит специальный вычислительный блок.
P.S. Чтобы стало понятно, в чем сложность операций с числами с плавающей точкой, ознакомься с тем, как они кодируются в памяти компьютера - это международный стандарт IEEE 754 -
http://www.softelectro.ru/ieee754.html
Просмотри хотя бы очень поверхностно этот стандарт и ты сразу поймешь :)
Говоря попросту, числа с плавающей точкой в компьютере - это не записи чисел, в которых в какой-то позиции стоит точка. Чтобы поместить в 4 или 8 байтов огромный диапазон чисел, для их записи применяется специальная очень сложная система счисления, в которой прямые операции сложения, вычитания, умножения и деления невозможны и для этих операций требуются очень сложные преобразования.
Вова Кирон
Вова Кирон
74 256
Сергей Озеров В смысле говоря простым языком это из за системы счисления так происходит, столько гемора?
Сергей Озеров Я же говорю что надо другую систему, эта слишком г*нная, она только укорачивает число транзисторов в памяти, а расчёты делать не умеет. Главное не количество, а качество в расчётах. Можно сгруппировать данные что их станет минимальное количество.
В вопросе не хватает ссылки на то, где это говорят и применительно к чему.
Дима Митин
Дима Митин
36 282
Сергей Озеров где то на сайте нвидиа читал. Применительно к компьютерной графике.
Ну не зная о чем идет речь тяжело объяснить... Может там подразумевают не тяжесть вычислений, а тяжесть изготовления алу - который вычисляет. А может там подразумевают что в 3д игре используются сложные математические формулы для вычисления 3д модели... И не только игре... https://www.google.by/search?q=формулы+3д&oq=формулы+3д&es_sm=93&ie=UTF-8#q=линейная+алгебра+для+разработчиков