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


__ll_rshift

Только для систем Microsoft

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

__int64 __ll_rshift(
   __int64 Mask,
   int nBit
);

Параметры

  • [входящий] Mask
    64 - Целое значение, которое требуется сдвигать права.

  • [входящий] nBit
    Число битов для сдвигать, остатка от деления 64 на x64 и остатка от деления 32 на базе x86.

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

Маска сдвиганная битами nBit.

Требования

Встроенный объект

Архитектура

__ll_rshift

x86, x64

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

Заметки

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

Пример

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

Output

ffffffffffffff00
 - 100
fffffffffffffff0
 - 10

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

См. также

Ссылки

Встроенные объекты компилятора

__ll_lshift

__ull_rshift