__ll_rshift
Microsoft 專有的
將右邊的第一個參數所指定的 64 位元值的第二個參數所指定的位元數。
__int64 __ll_rshift(
__int64 Mask,
int nBit
);
參數
[in] Mask
若要向右移位 64 位元整數值。[in] nBit
輪班,模數 64 x 64 上, 及取餘數在 x86 32 位元數。
傳回值
遮罩前移nBit位元。
需求
內建 |
架構 |
---|---|
__ll_rshift |
x86,x64 |
標頭檔 <intrin.h>
備註
如果第二個參數大於 64 x 64 (在 x86 32) 上,該數字不會採取模數 64 (在 x86 32) 來決定要移位的位元數。 ll前置詞會指示這是一項作業,在long long、 另一個名稱為__int64,64 位元帶正負號整數類資料型別。
範例
// ll_rshift.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;
#pragma intrinsic(__ll_rshift)
int main()
{
__int64 Mask = - 0x100;
int nBit = 4;
cout << hex << Mask << endl;
cout << " - " << (- Mask) << endl;
Mask = __ll_rshift(Mask, nBit);
cout << hex << Mask << endl;
cout << " - " << (- Mask) << endl;
}
Output
ffffffffffffff00
- 100
fffffffffffffff0
- 10
附註如果**_ull_rshift**已被使用,向右移位標的值的 MSB 本來應該是零,因此您想要的結果可能尚未取得負數值的情況下。