Expand Minimize

Int64ShraMod32 macro

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

Syntax


LONGLONG Int64ShraMod32(
  [in]  LONGLONG Value,
  [in]  DWORD ShiftCount
);

Parameters

Value [in]

The signed 64-bit integer to be shifted.

ShiftCount [in]

The shift count in the range 0-31.

Return value

The return value is the signed 64-bit integer result of the right arithmetic shift operation.

Remarks

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

In a right arithmetic shift operation on a signed value, the value's bits move to the right, and vacated bits on the left side of the value are set to the value of the sign bit.

A compiler can generate optimal code for a right arithmetic 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 Int64ShraMod32 function lets the compiler generate optimal or near-optimal code.

Please note that the Int64ShraMod32 function's Value parameter and return value are 64-bit values, not LARGE_INTEGER structures.

Requirements

Minimum supported client

Windows XP [desktop apps | Windows Store apps]

Minimum supported server

Windows Server 2003 [desktop apps | Windows Store apps]

Header

Winnt.h (include Windows.h)

See also

Large Integers
Int64ShllMod32
Int64ShrlMod32

 

 

Community Additions

ADD
Show:
© 2014 Microsoft