共用方式為


__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 本來應該是零,因此您想要的結果可能尚未取得負數值的情況下。

請參閱

參考

編譯器內建

__ll_lshift

__ull_rshift