__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ą.