__ll_rshift

Microsoft 专用

将第一个参数指定的 64 位值右移第二个参数指定的位数。

语法

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

参数

掩码
[in] 要右移的 64 位整数值。

nBit
[in] 要移位的位数,在 x64 上按 64 取模,在 x86 上按 32 取模。

返回值

移位 nBit 位的掩码。

要求

Intrinsic 体系结构
__ll_rshift x86、x64

头文件<intrin.h>

注解

如果第二个参数在 x64 上大于 64(x86 上为 32),则将该参数按 64 取模(x86 上为 32)以确定要移位的位数。 ll 前缀表示它是对 long long(64 位有符号整数类型 __int64 的另一个名称)的操作。

示例

// ll_rshift.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;

#pragma intrinsic(__ll_rshift)

int main()
{
   __int64 Mask = - 0x100;
   int nBit = 4;
   cout << hex << Mask << endl;
   cout << " - " << (- Mask) << endl;
   Mask = __ll_rshift(Mask, nBit);
   cout << hex << Mask << endl;
   cout << " - " << (- Mask) << endl;
}

输出

ffffffffffffff00
- 100
fffffffffffffff0
- 10

注意

如果使用了 _ull_rshift,则右移值的 MSB 将为零,因此如果是负值,则不会获得所需的结果。

结束 Microsoft 专用

另请参阅

编译器内部函数
__ll_lshift
__ull_rshift