Elegancia (función conversión de tipo numérico)

propuesto por josejuan

Alguien ha dicho "Behold the power and elegance of Clojure". Comparemos la elegancia de nuestros lenguajes preferidos.

Enunciado
Debe definirse una función (o estructura similar) independiente en tu lenguaje, que realice la conversión (binaria) de un número entero con signo (el típico "Int", "Int32", "Int64", etc...) a un número no negativo de 8 bits.

Es decir, la entrada es un número en el rango -2^(n-1) - 1 hasta 2^(n-1) y la salida es un número en el rango 0 .. 255, como la conversión es binaria, se debe asumir el complemento a 2 como la representación de los negativos en el número entero de entrada.

La función debe llamarse ubyte y el argumento de entrada (si existe) debe llamarse val, así, la firma sería algo como

byte ubyte(int val);

y algunos ejemplos de test, sería

ubyte(0) == 0
ubyte(50) == 50
ubyte(255) == 255
ubyte(256) == 0
ubyte(-1) == 255
ubyte(257) == 1
ubyte(-255) == 1

si la función ya existe en tu lenguaje pero con otro nombre, debes definirla igualmente (puedes usar esa misma función existente, pues forma parte de tu elegante lenguaje).

si la función ya existe y se llama exactamente igual ("ubyte"), debes redefinirla con el nombre "vbyte" (puedes usar esa misma función existente, pues forma parte de tu elegante lenguaje).

Se pide ELEGANCIA (como la elegancia es algo subjetivo, cada cual podrá valorar entre las soluciones, cual le parece la más elegante)

Ver todo el enunciado

Preguntas sobre el desafío

¿Tienes dudas sobre el desafío? plantéala aquí

Plantea tu pregunta

7 Soluciones

Dar mi solución

Dar mi solución