Udostępnij za pośrednictwem


__ll_rshift

Programu Microsoft

Przesuwa 64-bitowa wartość określonego przez parametr pierwszej z prawej strony przez liczbę bitów określonych przez drugiego parametru.

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

Parametry

  • [w]Mask
    64-Bitowa liczba całkowita wartość Przesunięcie w prawo.

  • [w]nBit
    Liczba bitów przesunięcie modulo 64 x 64 i modulo 32 na x 86.

Wartość zwracana

Maska przesunięte o nBit bitów.

Wymagania

Wewnętrzne

Architektura

__ll_rshift

x 86x64

Plik nagłówkowy <intrin.h>

Uwagi

Jeśli drugi parametr jest większy niż 64 x 64 (32 na x 86), że numer jest pobierany modulo 64 (32 na x 86) do określania liczby bitów do przesunięcia.ll Prefiksu wskazuje, że jest operacji na long long, innego nazwa __int64, typem całkowitym podpisane 64-bitowych.

Przykład

// 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;
}

Dane wyjściowe

ffffffffffffff00
 - 100
fffffffffffffff0
 - 10

Uwaga Jeśli _ull_rshift było używane, MSB wartości przesunięte w prawo byłaby zero, tak pożądany wynik będzie nie mogą pochodzić z wartością ujemną.

Zobacz też

Informacje

Funkcje wewnętrzne kompilatora

__ll_lshift

__ull_rshift