__lzcnt16, __lzcnt, __lzcnt64
Только для систем Microsoft
Подсчитывает количество ведущих нулей в целое число 16 - 32 - или 64 байт.
unsigned short __lzcnt16(
unsigned short value
);
unsigned int __lzcnt(
unsigned int value
);
unsigned __int64 __lzcnt64(
unsigned __int64 value
);
Параметры
- [входящий] value
16 - 32 - 64 (Sp2) или целых чисел без знака для просмотра для ведущих нулей.
Возвращаемое значение
Количество битов ведущих нулей в параметре value. Если value нулю, то возвращаемое значение размер операнда ввода (16, 32 или 64). Если value значащий бит, то возвращаемое значение равно нулю.
Требования
Встроенный объект |
Архитектура |
---|---|
__lzcnt16 |
Предварительная обработка данных bit |
__lzcnt |
Предварительная обработка данных bit |
__lzcnt64 |
Предварительная обработка данных 64 бита в 64-разрядном режиме. |
Файл заголовка <intrin.h>
Заметки
Каждый из этих встроенных функций формирует инструкцию lzcnt. Размер значений, инструкция lzcnt возвращает такое же, как и размер аргумента. В 64-разрядном режиме не 32 с пакетом обновления 64 (sp2) регистры общего назначения, следовательно, нет пакетом обновления 64 (sp2 lzcnt.
Чтобы определить аппаратную поддержку для инструкции lzcnt вызов внутренним __cpuid с InfoType=0x80000001 и контрольный двоичный разряд 5 CPUInfo[2] (ECX). Этот бит будет 1, если инструкция поддерживается, и 0 - в противном случае. Если запустить код, который использует этот встроенный на оборудовании, не поддерживает инструкцию lzcnt результаты становятся непредсказуемыми.
Пример
// Compile this test with: /EHsc
#include <iostream>
#include <intrin.h>
using namespace std;
int main()
{
unsigned short us[3] = {0, 0xFF, 0xFFFF};
unsigned short usr;
unsigned int ui[4] = {0, 0xFF, 0xFFFF, 0xFFFFFFFF};
unsigned int uir;
for (int i=0; i<3; i++) {
usr = __lzcnt16(us[i]);
cout << "__lzcnt16(0x" << hex << us[i] << ") = " << dec << usr << endl;
}
for (int i=0; i<4; i++) {
uir = __lzcnt(ui[i]);
cout << "__lzcnt(0x" << hex << ui[i] << ") = " << dec << uir << endl;
}
}
ЭЛЕМЕНТ, относящийся Майкрософт
Авторские права 2007 предварительными микро- Устройствами, Inc все права защищены. Воспроизведено с разрешением от предварительных микро- Устройств, Inc