次の方法で共有


__ll_lshift

Microsoft 固有の仕様

指定された 64 ビット値を指定されたビット数だけ左にシフトします。

構文

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

パラメーター

Mask
[in] 左にシフトする 64 ビット整数値。

nBit
[in] シフトするビット数。

戻り値

nBit ビット左にシフトされたマスク。

要件

Intrinsic Architecture
__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

Note

左シフト操作の符号なしバージョンはありません。 これは、__ll_lshift で既に符号なし入力パラメーターが使用されているためです。 右シフトとは異なり、左シフトに対する符号の依存はありません。これは、シフトされた値の符号に関係なく、結果の最下位ビットは常に 0 に設定されるためです。

Microsoft 固有の仕様はここまで

関連項目

__ll_rshift
__ull_rshift
コンパイラの組み込み