__ll_rshift
Khusus Microsoft
Menggeser nilai 64-bit yang ditentukan oleh parameter pertama ke kanan, dengan sejumlah bit yang ditentukan oleh parameter kedua.
Sintaks
__int64 __ll_rshift(
__int64 Mask,
int nBit
);
Parameter
Masker
[di] Nilai bilangan bulat 64-bit untuk menggeser ke kanan.
nBit
[di] Jumlah bit yang akan digeser, modulo 64 pada x64, dan modulo 32 pada x86.
Nilai hasil
Masker digeser oleh nBit
bit.
Persyaratan
Intrinsik | Sistem |
---|---|
__ll_rshift |
x86, x64 |
File header<intrin.h>
Keterangan
Jika parameter kedua lebih besar dari 64 pada x64 (32 pada x86), angka tersebut diambil modulo 64 (32 pada x86) untuk menentukan jumlah bit yang akan digeser. ll
Awalan menunjukkan bahwa ini adalah operasi pada long long
, nama lain untuk __int64
, jenis integral bertanda tangan 64-bit.
Contoh
// 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
Catatan
Jika _ull_rshift
telah digunakan, MSB dari nilai yang digeser kanan akan menjadi nol, sehingga hasil yang diinginkan tidak akan diperoleh dalam kasus nilai negatif.
END Khusus Microsoft