Bagikan melalui


__popcnt16, __popcnt, __popcnt64

Khusus Microsoft

Menghitung jumlah 1 bit (jumlah populasi) dalam bilangan bulat yang tidak ditandatangani 16-, 32-, atau 64-bit.

Sintaks

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

Parameter

value
[di] Bilangan bulat 16-, 32-, atau 64-bit yang tidak ditandatangani yang jumlah populasinya kita inginkan.

Nilai hasil

Jumlah 1 bit dalam parameter nilai .

Persyaratan

Intrinsik Arsitektur
__popcnt16 Manipulasi Bit Tingkat Lanjut
__popcnt Manipulasi Bit Tingkat Lanjut
__popcnt64 Manipulasi Bit Tingkat Lanjut dalam mode 64-bit.

File header<intrin.h>

Keterangan

Masing-masing intrinsik menghasilkan popcnt instruksi. Dalam mode 32-bit, tidak ada register tujuan umum 64-bit, sehingga 64-bit popcnt tidak didukung.

Untuk menentukan dukungan perangkat keras untuk popcnt instruksi, panggil __cpuid intrinsik dengan InfoType=0x00000001 dan periksa bit 23 dari CPUInfo[2] (ECX). Bit ini adalah 1 jika instruksi didukung, dan 0 sebaliknya. Jika Anda menjalankan kode yang menggunakan intrinsik ini pada perangkat keras yang tidak mendukung popcnt instruksi, hasilnya tidak dapat diprediksi.

Contoh

#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;
  }
}
__popcnt16(0x0) = 0
__popcnt16(0xff) = 8
__popcnt16(0xffff) = 16
__popcnt(0x0) = 0
__popcnt(0xff) = 8
__popcnt(0xffff) = 16
__popcnt(0xffffffff) = 32

END Khusus Microsoft

Bagian Hak Cipta 2007 oleh Perangkat Mikro Tingkat Lanjut, Inc. Hak cipta dilindungi undang-undang. Direproduksi dengan izin dari Advanced Micro Devices, Inc.

Baca juga

Intrinsik pengkompilasi