Sdílet prostřednictvím


__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

Viz také

Vnitřní funkce kompilátoru
__ll_lshift
__ull_rshift