__ll_lshift

Microsoft 专用

转换所提供的 64 位值左移按位的指定数目。

unsigned __int64 __ll_lshift(
   unsigned __int64 Mask,
   int nBit
);

参数

  • [in] Mask
    转换为 64 位整数值左侧。

  • [in] nBit
    转换的位数。

返回值

掩码由 nBit 位左移。

要求

内部

体系结构

__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;
}

Output

10000

其中附注没有左移操作的未签名的版本。 这是因为, __ll_lshift 已使用无符号输入参数。 不同右移,,因为在结果的最低有效位始终设置为零无论传输,的值的符号不左移的符号依赖项。

请参见

参考

__ll_rshift

__ull_rshift

编译器内部函数