Поделиться через


__ll_rshift

Блок, относящийся только к системам Майкрософт

Сдвигает 64-разрядное значение, указанное первым параметром вправо, на несколько битов, указанных вторым параметром.

Синтаксис

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

Параметры

Маска
[in] 64-разрядное целое число для перемещения вправо.

nBit
[in] Количество битов для смены, модуло 64 на x64 и modulo 32 в x86.

Возвращаемое значение

Маска смещена nBit битами.

Требования

Intrinsic Архитектура
__ll_rshift x86, x64

Файл<заголовка intrin.h>

Замечания

Если второй параметр больше 64 на x64 (32 в x86), то это число принимается по модулю 64 (32 на x86), чтобы определить количество битов для смены. Префикс ll указывает, что это операция с long long, другое имя для __int6464-разрядного целочисленного типа со знаком.

Пример

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

Выходные данные

ffffffffffffff00
- 100
fffffffffffffff0
- 10

Примечание.

Если _ull_rshift используется, MSB смещенного вправо значения было бы нулевым, поэтому требуемый результат не был бы получен в случае отрицательного значения.

Завершение блока, относящегося только к системам Майкрософт

См. также

Встроенные компоненты компилятора
__ll_lshift
__ull_rshift