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


__ll_lshift

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

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

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

Параметры

  • [входящий] Mask
    64 - Целое число для сдвигать слева.

  • [входящий] nBit
    Количество битов для сдвигать.

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

Сдвиганная маска влево битами nBit.

Требования

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

Архитектура

__ll_lshift

x86, x64

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

Заметки

При компилировании программы с помощью архитектуры 64 бит и nBit превышает 63, то число битов для сдвигать остаток от деления 64 nBit. При компилировании программы с помощью архитектуры 32 бит и nBit превышает 31, то число битов для сдвигать остаток от деления 32 nBit.

В поле имя 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;
}

Output

10000

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

См. также

Ссылки

__ll_rshift

__ull_rshift

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