Estimados
Frente a las dudas planteadas, y ademas de la aclaracion que ya envio Gregory, les paso otro ejemplo que espero los pueda ayudar a entender como usar la informacion del programa de test.
Repetimos que el programa de test trabaja con las variables tal como se piden en el obligatorio y prueba las implementaciones de sus librerias tal como se piden en la letra del obligatorio.
La impresion en binario de las variables es solamente un formato para visualizar los datos que ayuda mucho a despulgar sus programas
Veamos paso a paso como utilizar la informacion:
1 ) supongamos que usamos la funcion concatena()
El programa de prueba toma la funcion concatena(.) , por ejemplo de la siguiente manera
concatena(1907204998,2,59330089,17)
Donde,
buffer=1907204998
nbb=2
codigo=59330089
nbc=17
(el programa de prueba toma valores al azar)
2) En ese caso la funcion concatena debe devolver : concatena(1907204998,2,593300891,17)=1774526464
3) Veamos las variables en binario
1907204998 = 0b01110001101011011010001110000110
59330089 = 0b00000011100010010100111000101001
1774526464 = 0b01101001110001010010000000000000
3) Veamos la concatenacion paso a paso
0b01110001101011011010001110000110 -> tomo los 2 bits mas significativos = 01
0b00000011100010010100111000101001 -> tomo los 17 bits menos significativos = 10100111000101001
Y estos se concatenan: 0b0110100111000101001 (resultaron 19 bits)
Ademas recuerde que la letra dice que si la suma de los bits concatenados es menor a 32 bits se debe completar a la derecha de la
concatenación con tantos ceros como sea necesario
Es resultado es : 0b01101001110001010010000000000000 (resultaron 32 bits)
El programa de test muestra entonces lo siguente:
SUCCESS:concatena(01110001101011011010001110000110,2,00000011100010010100111000101001,17)=01101001110001010010000000000000 ,Su codigo= 01101001110001010010000000000000
Efectivamente su libreria paso la prueba porque su programa concatena(1907204998,2,593300891,17) devolvio la variable 1774526464
4) Si el programa de test devolviera :
FAILURE:concatena(01110001101011011010001110000110,2,00000011100010010100111000101001,17)=01101001110001010010000000000000 ,Su codigo= 01101001110001010010000000100000
Esto es equivalente a decir que concatena(1907204998,2,593300891,17)=1774526464 pero su codigo devolvio 1774526496
¿ Puede ver cual fue su error mirando las variables ? ¿Verdad que resulta dificil indentificar que bit esta mal ?
Por eso el programa de prueba muestra formatos binarios,
FAILURE:concatena(01110001101011011010001110000110,2,00000011100010010100111000101001,17)=01101001110001010010000000000000 ,Su codigo= 01101001110001010010000000100000
Se puede leer que el resultado correcto es : 0b01101001110001010010000000000000=1774526464
Se puede leer que el resultado que su codigo devuelve es : 0b01101001110001010010000000100000=1774526496
¿ Puede indentificar ahora claramente que bit o bits tiene mal ?
Esperamos que esto pueda ayudar
Cualquier consulta a las ordenes y no duden en escribir
Atte
Leonardo