__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
уже используется неподписанный входной параметр. В отличие от смены вправо, не существует зависимости от знака для смены влево, так как наименьший значительный бит в результатах всегда равен нулю независимо от знака смещенного значения.
Завершение блока, относящегося только к системам Майкрософт