Скажите, пожалуйста, как C++ добавляет два числа типа float и делает процесс настолько быстрым. Я пытаюсь создать библиотеку, которая может вычислять огромные числа, но мой процесс их добавления выходит в 1000 раз менее эффективен, чем два поплавка.Как работает вычисление float на C++?
ответ
Ответ заключается в том, что у ЦПУ есть оборудование, которое знает, как хранить числа с плавающей запятой, и может непосредственно выполнять вычисления на них.
Например, вы можете хранить два числа с плавающей точкой в регистрах XMM0 и XMM1 и добавить их вместе, получая процессор выполнить приведенную ниже инструкцию: -
addsd% XMM1,% XMM0
Это для 64-разрядный «x86», но каждый процессор имеет схожую.
Ну, старые процессоры, такие как 8 бит Z80 не было оборудования для выполнения с плавающей точкой математике, и вы должны были писать небольшие кусочки кода, чтобы сделать это, и да, они медленно ...
Не каждый процессор имеет плавающее оборудование, но большинство из них, вероятно, это делают. Некоторые эмулируют аппаратное обеспечение. Но для такого форума это слишком много, чтобы объяснить, как это делается. –
- 1. C - вычисление и печать int как float
- 2. вычисление php float 2 десятичная точка
- 3. средний режим avg вычисление массива float
- 4. Проблема с float на C
- 5. Как работает BigDecimal.valueOf (float)?
- 6. Отправка значений float на сокете C/C++
- 7. Вычисление решения уравнения в C++
- 8. Как работает сравнение integer-float?
- 9. Как оптимизировать это вычисление
- 10. C++ вычисление заказа char
- 11. float не работает, как следует
- 12. Сравнение float и integer в c/C++
- 13. C++ float in Python float неправильное преобразование
- 14. SQL вычисление работает
- 15. символическое вычисление в C++
- 16. Float на PostgreSQL с использованием C#
- 17. C#: Как округлить значение float до ближайшего значения float?
- 18. Как передать float по ссылке из C++ обратно на C#?
- 19. Ошибка кода C# (вычисление)
- 20. (float) литье не работает
- 21. C, вычисление математической строки?
- 22. Вычисление среднего класса в C
- 23. Вычисление CRC16 в C#
- 24. Почему float c не работает так, как должно быть?
- 25. Как и почему работает float main() в C?
- 26. Marshal float * to C#
- 27. Вычисление C++ set
- 28. Вычисление шага класса C++ в OpenGL
- 29. C++ - вычисление ИМТ неожиданно
- 30. C#: вычисление времени дифф
может я в меньше всего знаю, почему все голосуют, так как я не мог найти ответ нигде. –
Современные процессоры выполняют операции с плавающей запятой непосредственно в аппаратном обеспечении. –
Подробнее здесь: https://en.wikipedia.org/wiki/Floating-point_unit – user4581301