Me encuentro con un problema muy complicado con la manipulación de bits.coincidencia de patrón de bits y sustitución
Hasta donde yo sé, el tamaño variable más pequeño para mantener un valor es de un byte de 8 bits. Las operaciones de bit disponibles en C/C++ se aplican a una unidad completa de bytes.
Imagine que tengo un mapa para reemplazar un patrón binario 100100 (6 bits) con una señal 10000 (5 bits). Si el 1er byte de los datos de entrada de un archivo es 10010001 (8 bits) almacenado en una variable char, parte de él coincide con el patrón de 6 bits y, por lo tanto, será reemplazado por la señal de 5 bits para dar un resultado de 1000001 (7 bits) .
Puedo usar una máscara para manipular los bits dentro de un byte para obtener un resultado de los bits más a la izquierda en 10000 (5 bits) pero los 3 bits más a la derecha se vuelven muy difíciles de manipular. No puedo desplazar los 3 bits más a la derecha de los datos originales para obtener el resultado correcto 1000001 (7 bit) seguido de 1 bit de relleno en esa variable char que se debe completar con el 1er bit del siguiente byte seguido de la entrada.
Me pregunto si C/C++ realmente puede hacer este tipo de reemplazo de patrones de bits de longitud que no encajan en una variable Char (1 byte) o incluso Int (4 bytes). ¿Puede C/C++ hacer el truco o tenemos que buscar otros lenguajes de ensamblaje que se ocupen de manipulaciones de bits individuales?
Escuché que Power Basic puede realizar la manipulación bit por bit mejor que C/C++.
¿Podría poner algunos saltos de línea allí? kthanxbai –
Comparando Power Basic a C/C++? Huele como un troll. – Oded
Obligatorio: http://graphics.stanford.edu/~seander/bithacks.html –