__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 固有の仕様はここまで