__ll_rshift
Specifické pro Microsoft
Posune 64bitovou hodnotu určenou prvním parametrem doprava o několik bitů určených druhým parametrem.
Syntaxe
__int64 __ll_rshift(
__int64 Mask,
int nBit
);
Parametry
Maska
[v] 64bitová celočíselná hodnota se posune doprava.
nBit
[v] Počet bitů, které se mají posunout, modulo 64 na x64 a modulo 32 na x86.
Vrácená hodnota
Maska se posune o nBit
bity.
Požadavky
Vnitřní | Architektura |
---|---|
__ll_rshift |
x86, x64 |
Hlavičkový soubor<intrin.h>
Poznámky
Pokud je druhý parametr větší než 64 na x64 (32 na x86), toto číslo se převezme modulo 64 (32 na x86) a určí počet bitů, které se mají posunout. Předpona ll
označuje, že se jedná o operaci long long
, jiný název __int64
, 64bitový integrální typ se znaménkou.
Příklad
// 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;
}
Výstup
ffffffffffffff00
- 100
fffffffffffffff0
- 10
Poznámka:
Pokud _ull_rshift
by byla použita hodnota MSB posunutá doprava, byla by nula, takže požadovaný výsledek by nebyl získán v případě záporné hodnoty.
END Microsoft Specific