c determina si 1 requiere eficiencia
¿Quieres utilizar el bit del sistema configurado en la universidad?
Si quieres ser realmente eficiente, utiliza un carácter unsigned para almacenarlo tú mismo
Cada acceso a la memoria requiere al menos 1 byte
El bit establecido es solo un conveniencia Método de programación
Nada eficiente
Cada vez que obtienes un bit, debes leer al menos un byte de datos de la memoria
Cada acceso en se necesita leer al menos un byte de datos de la memoria
Si se utiliza un carácter sin firmar, se requiere al menos 1 byte para cada acceso a la memoria. p>
Utilice "unsigned?char" usted mismo
Obtenga un byte a la vez
Compare 8 bits a la vez
La mayoría eficaz El método consiste en incrustar el ensamblaje usted mismo
El siguiente es un ejemplo
Solo como referencia:
#include?lt;stdio.hgt; p>
unsigned?char?inline?calc(unsigned?char*?src, unsigned?char*?pos)
{
unsigned?char?x=0;
unsigned?char?uc=*(src (unsigned?int)pos);
_asm
{
push?ecx
mov?ecx, 8
bucle1: shr?uc, 1
adc?x, 0
bucle?bucle1 p>
pop?ecx
}
return?x;
}
int?main()
{
Carbón sin firmar?bittest[9]="x01\x02\x03\x04\x5\x6\x7\xff", *p=NULL;
for(int?i=0;ilt;9;i)
printf("bitd: d\n", i, calc(bittest, p ));
return ?;
}
Si el resultado es incorrecto, por favor dímelo
Es al menos 8 veces más rápido que bitset
Si la implementación interna de bitset no está optimizada a nivel de ensamblaje, podría ser cientos de veces más rápida
Pruébelo usted mismo. Pruébalo tú mismo