Condividi tramite


__lzcnt16, __lzcnt, __lzcnt64

Specifici di Microsoft

Calcola il numero di zeri iniziali a un intero compreso tra 16 e 32, ovvero, o 64 byte.

unsigned short __lzcnt16(
   unsigned short value
);
unsigned int __lzcnt(
   unsigned int value
);
unsigned __int64 __lzcnt64(
   unsigned __int64 value
);

Parametri

  • [in] value
    Il 16 -, il 32 -, o l'Unsigned Integer a 64 bit da cercare zeri iniziali.

Valore restituito

Il numero di bit di zero iniziale nel parametro di value . Se value è zero, il valore restituito è la dimensione dell'operando di input (16, 32, o 64). Se il bit più significativi di value è uno, il valore restituito è zero.

Requisiti

Intrinseco

Architettura

__lzcnt16

La modifica dei bit avanzata

__lzcnt

La modifica dei bit avanzata

__lzcnt64

La modifica dei bit avanzate in modalità a 64 bit.

File di intestazione <intrin.h>

Note

Ognuna di queste funzioni intrinseche genera l'istruzione di lzcnt . La dimensione del valore che l'istruzione dilzcnt restituisce è la stessa dimensione del relativo argomento. In modalità a 32 bit non esiste registri di utilizzo generale a 64 bit, nessun 64 bit lzcnt.

Per determinare il supporto hardware all'istruzione dilzcnt chiamare la funzione intrinseca di __cpuid con InfoType=0x80000001 e il bit di controllo, 5 di CPUInfo[2] (ECX). Questo bit è altrimenti 1 se l'istruzione è supportata e 0. Se si esegue il codice che utilizza questa funzione intrinseca sull'hardware che non supporta l'istruzione dilzcnt , i risultati sono imprevedibili.

Esempio

// 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;
  }
}
  

Microsoft FINALE specifico

Copyright 2007 da Advanced Micro Devices, inc tutti i diritti riservati. Riprodotto con l'autorizzazione di Advanced Micro Devices, inc

Vedere anche

Riferimenti

Intrinseci del compilatore