Algoritmos

Re: Algoritmos

de Federico Rivero -
Número de respuestas: 0

Estimado:

Cómo estás? Para la mayoría de los ejercicios, la entrada 'debería ser una tira de bits', para poder interpretarlo según el tipo de dato que se reciba. Sin embargo, como C no posee un tipo de datos nativo para representar tiras de bits, están obligados a usar algún tipo de datos nativo y obtener los bits vía máscaras. Por ejemplo, supongan que tienen una función que recibe 2 dígitos BCD, los cuales, como saben, ocupan 4 bits cada uno. Una manera de representar eso es recibiendo algún tipo de datos de 8 bits, por ejemplo un caracter, y luego obtener los bits correspondientes vía máscaras y shifts:

void recibo2BCD(char dosBCD){

         char a = dosBCD & 0x0F;  // Asigna a 'a' los 4 bits menos significativos de 'dosBCD'

         char b = (dosBCD & 0xF0) >> 4; // Asigna a 'b' los 4 bits más significativos de 'dosBCD'

         ...

}

Observación 1: En ambos casos se 'desperdician' los 4 bits más significativos de las variables a y b, pero es prácticamente inevitable porque como dije antes, no hay tipos nativos de 4 bits.

Observación 2: Notar que el tipo de dato utilizado no influye en los cálculos, salvo por la cantidad de bits que guarda. Es decir, en ningún momento importa que el tipo set 'un carácter' , ya que nunca se usan funciones de interpretación de los bits, sólo de manipulación.

Saludos!

        Federico