__ll_lshift

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

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

Синтаксис

unsigned __int64 __ll_lshift(
   unsigned __int64 Mask,
   int nBit
);

Параметры

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

nBit
[in] Количество битов для перемещения.

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

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

Требования

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

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

Замечания

Если вы компилируете программу для 64-разрядной архитектуры и nBit превышает 63, количество битов для смены — nBit 64. Если вы компилируете программу для 32-разрядной архитектуры и nBit превышает 31, количество битов для смены является nBit модулем 32.

В ll имени указывается, что это операция с long long (__int64).

Пример

// ll_lshift.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;

#pragma intrinsic(__ll_lshift)

int main()
{
   unsigned __int64 Mask = 0x100;
   int nBit = 8;
   Mask = __ll_lshift(Mask, nBit);
   cout << hex << Mask << endl;
}

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

10000

Примечание.

Нет неподписанных версий операции смены влево. Это связано с тем, что __ll_lshift уже используется неподписанный входной параметр. В отличие от смены вправо, не существует зависимости от знака для смены влево, так как наименьший значительный бит в результатах всегда равен нулю независимо от знака смещенного значения.

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

См. также

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