Windows apps
Collapse the table of content
Expand the table of content
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Int64ShrlMod32 macro

Performs a right logical shift operation on an unsigned 64-bit integer value. The function provides improved shifting code for right logical shifts where the shift count is in the range 0-31.


ULONGLONG Int64ShrlMod32(
  [in] ULONGLONG Value,
  [in] DWORD     ShiftCount


Value [in]

The unsigned 64-bit integer to be shifted.

ShiftCount [in]

The shift count in the range 0-31.

Return value

The return value is the unsigned 64-bit integer result of the right logical shift operation.


The shift count is the number of bit positions that the value's bits move.

In a right logical shift operation on an unsigned value, the value's bits move to the right, and vacated bits on the left side of the value are set to zero.

A compiler can generate optimal code for a right logical shift operation when the shift count is a constant. However, if the shift count is a variable whose range of values is unknown, the compiler must assume the worst case, leading to non-optimal code: code that calls a subroutine, or code that is inline but branches. By restricting the shift count to the range 0-31, the Int64ShrlMod32 function lets the compiler generate optimal or near-optimal code.

Note  The Int64ShrlMod32 function's Value parameter and return value are 64-bit values, not LARGE_INTEGER structures.


Minimum supported client

Windows XP [desktop apps | UWP apps]

Minimum supported server

Windows Server 2003 [desktop apps | UWP apps]


Winnt.h (include Windows.h)

See also

Large Integers



© 2018 Microsoft