Hola a todos.
Creo que es la primera vez que los consulto y no puedo mostrar ningún avance, bueno debo aclarar que estoy desconcertado y no sé por dónde comenzar y les soy sincero al decir que ni siquiera pude buscar en la web.-
Dejo el enunciado y espero que puedan ayudarme con teoría o con algún ej.-
(http://i62.tinypic.com/2r2x8ph.png)
Saludos.
Daniel
el entero lo haces igual al char 1 desplazado tantos bits como tiene char
variable_int = variable_char_1<<sizeof(char)
luego al entero le sumas el otro char
variable_int = variable_int + variable_char_2
Cita de: DanielC# en 22 Febrero 2015, 20:10 PM(http://i62.tinypic.com/2r2x8ph.png)
Es relativamente fácil, todas las variables a utilizar deben ser sin signo y la operación para empaquetar los caracteres es:
unsigned char a = ALGO;
unsigned char b = ALGO;
unsigned int r = a << CHAR_BIT | b;
/* Impresion bit por bit de la variable r */
Como imprimir una variable bit por bit es algo que ya se trato en uno de tus otros temas.
Un saludo
Hola.
engel lex, me ocurrió algo inusual con tu respuesta, cuando la leí por primera vez tenía unos ej. Que luego (de ver el partido de la selección Argentina) desaparecieron y me apareció mi post modificado (por vos) y realmente no le encuentro diferencia con el original.
rir3760, ¿me podrías decir si mi programa tiene que ver con el enunciado? .-
Tan sólo me faltaría que alguien me diga en la práctica, ¿de qué forma se puede aplicar el empaquetado de caracteres?.-
Gracias a todos por el tiempo.-
#include <stdio.h>
#include <limits.h>
void empacaCaracteres(char a, char b);
int main(void){
unsigned char a = 'r', b = 'd';
empacaCaracteres(a, b);
getchar();
return 0;
}
void empacaCaracteres(char a, char b){
unsigned int v = a << CHAR_BIT | b;
unsigned bits = 1U << (sizeof(unsigned) * CHAR_BIT - 1), sep=0;
printf("\n\n");
while(bits){
printf(sep %8 == 0 ? " " : "");
printf(v & bits ? "1" : "0");
sep++;
bits /=2;
}
}
Saludos.
Daniel
Olle daniel desde un tiempo he visto tus dudas y me gustaria saber que curso estas siguiendo o donde estas encontrando esos ejercicios
si los compartes seria fabuloso
saludos...
Hola crack81.
Te dejo la imagen de la tapa.-
(http://i57.tinypic.com/20jiv4x.png)
Saludos.
Daniel
Cita de: DanielC# en 23 Febrero 2015, 21:38 PM¿me podrías decir si mi programa tiene que ver con el enunciado?
Tu programa realiza la operación indicada de forma correcta, solo una recomendación: no utilices la función printf para imprimir una cadena vacía. En su lugar puedes utilizar un condicional para imprimir el espacio o bien ya que se trata de imprimir un solo carácter puedes usar la función putchar y el operador condicional, de esta forma:
while (bits){
putchar(v & bits ? '1' : '0');
bits >>= 1;
sep++;
if (sep % CHAR_BIT == 0)
putchar(sep == sizeof(unsigned) * CHAR_BIT ? '\n' : ' ');
}
Un saludo
Cita de: DanielC# en 23 Febrero 2015, 21:38 PM
Hola.
engel lex, me ocurrió algo inusual con tu respuesta, cuando la leí por primera vez tenía unos ej. Que luego (de ver el partido de la selección Argentina) desaparecieron y me apareció mi post modificado (por vos) y realmente no le encuentro diferencia con el original.
jaja algunas veces corrijo detallitos en imagenes y no aviso :)
lo que hice fue modificar tu imagen agregando el parametro " width=600" luego del img para que la imagen no se viera tan grande, sin eso se ve así
(http://i62.tinypic.com/2r2x8ph.png)