Poner a cero todos los bits después del segundo índice.
Quiero poner a cero todos los bits a partir del segundo índice (incluyendo el segundo) en un unsigned int. Aquí está el código que escribí hasta ahora pero no funciona: (temp es un unsigned int.)
for(int i=2; i< DSLength(dnaS); i++)
{
temp = temp & (0 << i);
}
¡Sigue poniendo a cero todo el número…
davy.ai
El problema con el código proporcionado es que se está realizando una operación AND bit a bit con un desplazamiento hacia la izquierda de 0, lo que siempre dará como resultado 0. En cambio, el código debería realizar una operación OR bit a bit para establecer todos los bits después del segundo índice en 0.
Aquí hay un ejemplo de fragmento de código que debería lograr el resultado deseado:
Explicación:
0xFFFFFFFF
representa un unsigned int con todos los bits establecidos en 1. Esto se utiliza como valor de entrada de ejemplo.~(0xFFFFFFFF << 2)
crea una máscara para borrar todos los bits después del segundo índice. Esto se hace mediante un desplazamiento hacia la izquierda de todos los bits en 2, luego negando el resultado.temp
ymask
aplica la máscara atemp
, lo que resulta en que todos los bits después del segundo índice se establecen en 0.