Int64ShraMod32功能对有符号的64位整数值执行正确的算术移位操作。该函数提供了改进的移位代码,用于右移算,其中移位计数范围为0 - 31。
LONGLONG Int64ShraMod32(
LONGLONG 【值】, | //指定带符号的64位整数,以便算术运算 |
DWORD 【ShiftCount】 | //指定范围0 - 31的班次计数 |
); |
参数
【值】
指定要移位的带符号的64位整数。
【ShiftCount】
指定移位计数范围0 - 31。
返回值
返回值是右侧算术移位操作的带符号64位整数结果。
备注
移位计数是值的位移动的位位数。
在有符号值的右侧算术移位操作中,值的位向右移动,并且值左侧的空位将被设置为符号位的值。
当移位计数为常数时,编译器可以为右侧算术移位操作生成最佳代码。但是,如果移位计数是值范围未知的变量,则编译器必须承担最差的情况,导致非最佳代码:调用子例程的代码或内联但分支的代码。通过将移位计数限制在0 - 31范围内,Int64ShraMod32函数可以让编译器生成最佳或接近最佳代码。
请注意,Int64ShraMod32函数的【值】参数和返回值是64位值,而不是LARGE_INTEGER结构。
也可以看看