__ll_rshift
Microsoft'a Özgü
İlk parametre tarafından belirtilen 64 bit değeri, ikinci parametre tarafından belirtilen bit sayısıyla sağa kaydırıyor.
Sözdizimi
__int64 __ll_rshift(
__int64 Mask,
int nBit
);
Parametreler
Maske
[in] Sağa kaydırmak için 64 bit tamsayı değeri.
nBit
[in] Kaydıracak bit sayısı, x64'te modulo 64 ve x86'da modulo 32.
Dönüş değeri
Maske bitlerle kaydırıldı nBit
.
Gereksinimler
Içsel | Mimari |
---|---|
__ll_rshift |
x86, x64 |
intrin.h üst bilgi dosyası<>
Açıklamalar
İkinci parametre x64 üzerinde 64'ten büyükse (x86'da 32), kaydıracak bit sayısını belirlemek için bu sayı modulo 64 (x86'da 32) alınır. Ön ll
ek, 64 bit imzalı tam sayı türü için __int64
başka bir adı olan üzerinde long long
bir işlem olduğunu gösterir.
Örnek
// 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;
}
Çıktı
ffffffffffffff00
- 100
fffffffffffffff0
- 10
Not
Kullanılmışsa _ull_rshift
, sağ kaydırılan değerin MSB değeri sıfır olurdu, bu nedenle negatif bir değer söz konusu olduğunda istenen sonuç elde edilemeyebilirdi.
END Microsoft'a Özgü