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


__popcnt16, __popcnt, __popcnt64

Только для систем Microsoft

Подсчитывает количество битов один (количество заполнения) как единое целое число без знака размером 16 - 32 - или 64 байт.

unsigned short __popcnt16(
   unsigned short value
);
unsigned int __popcnt(
   unsigned int value
);
unsigned __int64 __popcnt64(
   unsigned __int64 value
);

Параметры

  • [входящий] value
    16 - 32 - Или 64 целое число без знака, для которого нужно хочет количество заполнения.

Возвращаемое значение

Количество битов одного в параметре value.

Требования

Встроенный объект

Архитектура

__popcnt16

Предварительная обработка данных bit

__popcnt

Предварительная обработка данных bit

__popcnt64

Предварительная обработка данных 64 бита в 64-разрядном режиме.

Файл заголовка <intrin.h>

Заметки

Каждый из этих встроенных функций формирует инструкцию popcnt. Размер значений, инструкция popcnt возвращает такое же, как и размер аргумента. В 64-разрядном режиме не 32 с пакетом обновления 64 (sp2) регистры общего назначения, следовательно, нет пакетом обновления 64 (sp2 popcnt.

Чтобы определить аппаратную поддержку для инструкции popcnt, вызовите внутреннего элемента __cpuid с InfoType=0x00000001 и контрольный двоичный разряд 23 CPUInfo[2] (ECX). Этот бит 1, если инструкция поддерживается, и 0 - в противном случае. Если запустить код, который использует этот встроенный на оборудовании, не поддерживает инструкцию popcnt результаты становятся непредсказуемыми.

Пример

#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 = __popcnt16(us[i]);
    cout << "__popcnt16(0x" << hex << us[i] << ") = " << dec << usr << endl;
  }

  for (int i=0; i<4; i++) {
    uir = __popcnt(ui[i]);
    cout << "__popcnt(0x" << hex << ui[i] << ") = " << dec << uir << endl;
  }
}
  

ЭЛЕМЕНТ, относящийся Майкрософт

Авторские права 2007 предварительными микро- Устройствами, Inc все права защищены. Воспроизведено с разрешением от предварительных микро- Устройств, Inc

См. также

Ссылки

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