__ll_lshift
Microsoft 专用
将提供的 64 位值向左移动指定的位数。
语法
unsigned __int64 __ll_lshift(
unsigned __int64 Mask,
int nBit
);
参数
掩码
[in] 要左移的 64 位整数值。
nBit
[in] 要位移的位数。
返回值
左移 nBit
位的掩码。
要求
Intrinsic | 体系结构 |
---|---|
__ll_lshift |
x86、x64 |
头文件<intrin.h>
备注
如果为 64 位体系结构编译程序,并且 nBit
大于 63,则要移动的位数是 nBit
对 64 取模。 如果为 32 位体系结构编译程序,并且 nBit
大于 31,则要移动的位数是 nBit
对 32 取模。
名称中的 ll
表示它是对 long long
(__int64
) 的操作。
示例
// ll_lshift.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;
#pragma intrinsic(__ll_lshift)
int main()
{
unsigned __int64 Mask = 0x100;
int nBit = 8;
Mask = __ll_lshift(Mask, nBit);
cout << hex << Mask << endl;
}
输出
10000
注意
没有无符号版本的左移操作。 这是因为 __ll_lshift
已使用无符号输入参数。 与右移不同,左移没有符号依赖,因为无论值移动的符号如何,结果中的最低有效位始终设置为零。
结束 Microsoft 专用