__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 专用