3

Я понимаю, что обычный процессор выполняет арифметику для целых чисел (например, целых чисел), а также для побитовых операций; FPU выполняет арифметику с плавающей запятой. Однако я пытаюсь узнать, как / где арифметика для типов данных Decimal (например, для c #) происходит внутри типичного процессора?

2 ответа2

0

Это вопрос реализации ... Вы можете получить точную информацию, скомпилировав конкретный код для сборки, см. Эту статью StackExchange.

В той степени, в которой это не вопрос реализации, вы можете увидеть здесь замечания о внутреннем представлении, что объект состоит из трех частей:

  • S = знаковый бит
  • Я = 96-битное целое
  • F = "масштабный коэффициент"

Значение рассчитывается по формуле:

value = ( S * I ) / ( 10 ^ F )

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

0

Целочисленная арифметика обрабатывается одним из основных функциональных блоков ЦП, известным как Арифметическая логическая единица или АЛУ.

АЛУ может выполнять различные целочисленные сложения, вычитания и искажения, а также логические операции с данными.

Тот факт, что этот модуль работает с использованием целых чисел, не означает, что вы не можете выполнять математику с плавающей запятой, он будет медленнее, чем выделенный FPU. Смотрите здесь для некоторых деталей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .