De ahora en mas, y hasta que tengamos que pasarnos mas a "lo mas low level"... cuando tenga que escribir un algoritmo(digamos en c por comodida) como consideramos la entrada? o sea si tengo que hacer algo con numeros en binario.. los tomo como array dijieron, pero array de que tipo? desde ya muchas gracias y espero no haberme mareado mucho
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