Поделиться через


Макрос Int64ShraMod32 (winnt.h)

Выполняет операцию арифметического смещения в 64-разрядном целочисленном значении со знаком. Функция предоставляет улучшенный код переключения для правых арифметических сдвигов, где число сдвигов находится в диапазоне 0–31.

Синтаксис

LONGLONG Int64ShraMod32(
  [in]  LONGLONG a,
  [in]  DWORD b
);

Параметры

[in] a

Смещенное 64-разрядное целое число со знаком.

[in] b

Число сдвигов в диапазоне 0–31.

Возвращаемое значение

Тип: LONGLONG

Возвращаемое значение является результатом целого числа со знаком 64-разрядного целого числа операции правого арифметического смещения.

Замечания

Число сдвигов — это количество битовых позиций, которые перемещаются битами значения.

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

Компилятор может создать оптимальный код для операции арифметического смещения вправо, когда число сдвигов является константой. Однако если число сдвигов является переменной, диапазон значений которой неизвестен, компилятор должен предположить худший случай, что приводит к неоптимальным кодам: код, который вызывает подзадачи или код, который является встроенным, но ветвями. При ограничении количества сдвигов до диапазона 0–31 функция Int64ShraMod32 позволяет компилятору создавать оптимальный или практически оптимальный код.

Обратите внимание, что параметр Value функции Int64ShraMod32 и возвращаемое значение — 64-разрядные значения, а не структуры LARGE_INTEGER.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows XP [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2003 [классические приложения | Приложения UWP]
целевая платформа Виндоус
Заголовок winnt.h (включая Windows.h)

См. также

Int64ShllMod32

Int64ShrlMod32

Большие целые числа