__ll_lshift
Specifické pro Microsoft
Posune zadanou 64bitovou hodnotu doleva o zadaný počet bitů.
Syntaxe
unsigned __int64 __ll_lshift(
unsigned __int64 Mask,
int nBit
);
Parametry
Maska
[v] 64bitová celočíselná hodnota, která se posune doleva.
nBit
[v] Počet bitů, které se mají posunout.
Vrácená hodnota
Maska se přesunula doleva o nBit
bity.
Požadavky
Vnitřní | Architektura |
---|---|
__ll_lshift |
x86, x64 |
Hlavičkový soubor<intrin.h>
Poznámky
Pokud program zkompilujete pro 64bitovou architekturu a nBit
je větší než 63, je počet bitů, které se mají posunout nBit
, modulo 64. Pokud program zkompilujete pro 32bitovou architekturu a nBit
je větší než 31, je počet bitů, které se mají posunout nBit
, modulo 32.
V ll
názvu je uvedeno, že se jedná o operaci long long
__int64
().
Příklad
// 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;
}
Výstup
10000
Poznámka:
Neexistuje žádná nepodepsaná verze operace levého posunu. Důvodem je to, že __ll_lshift
již používá nepodepsaný vstupní parametr. Na rozdíl od pravého posunu neexistuje závislosti na levém posunu, protože nejméně významný bit ve výsledku je vždy nastaven na nulu bez ohledu na znaménko posunuté hodnoty.
END Microsoft Specific