Int64ShraMod32
The Int64ShraMod32
function 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.
LONGLONG Int64ShraMod32(
LONGLONG Value, |
// specifies signed
64-bit integer to shift right arithmetically |
DWORD ShiftCount |
// specifies a
shift count in the range 0 -
31 |
); |
|
Parameters
Value
Specifies the
signed 64-bit integer to be shifted.
ShiftCount
Specifies a
shift count in the range 0 -
31.
Return Values
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.
See Also