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

另请参阅

__ll_rshift
__ull_rshift
编译器内部函数