__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 прав-сдвиганного значения было бы равно нулю, поэтому желаемый результат не был бы получен в случае отрицательного значения.