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


__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

См. также

Ссылки

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