--- title: Gray code id: 5a23c84252665b21eecc7e80 challengeType: 5 videoUrl: '' localeTitle: Código gris --- ## Description
El código gris es una forma de codificación binaria donde las transiciones entre números consecutivos difieren solo en un bit. Esta es una codificación útil para reducir los riesgos de datos de hardware con valores que cambian rápidamente y / o se conectan a hardware más lento como entradas. También es útil para generar entradas para los mapas de Karnaugh en orden de izquierda a derecha o de arriba a abajo. Cree una función para codificar un número y decodificar un número del código Gray. La función deberá tener 2 parámetros. El primero sería un booleano. La función debe codificar para verdadero y decodificar para falso. El segundo parámetro sería el número a codificar / decodificar. Muestre las representaciones binarias normales, las representaciones de código de Gray y los valores de código de Gray descodificados para todos los números binarios de 5 bits (0-31 inclusive, no es necesario llevar 0). Hay muchos códigos de Gray posibles. Lo siguiente codifica lo que se llama "código gris reflejado en binario".
Codificación (MSB es el bit 0, b es binario, g es el código gris):
if b[i-1] = 1
g[i] = not b[i]
else
g[i] = b[i]
O:
g = b xor (b logically right shifted 1 time)
Decodificación (MSB es el bit 0, b es binario, g es el código gris):
b[0] = g[0]
for other bits:
b[i] = g[i] xor b[i-1]
## Instructions
## Tests
```yml tests: - text: gray debería ser una función. testString: 'assert(typeof gray=="function","gray should be a function.");' - text: 'gray(true,177) debe devolver un número.' testString: 'assert(typeof gray(true,177)=="number","gray(true,177) should return a number.");' - text: 'gray(true,177) debe devolver 233 .' testString: 'assert.equal(gray(true,177),233,"gray(true,177) should return 233.");' - text: 'gray(true,425) debe devolver 381 .' testString: 'assert.equal(gray(true,425),381,"gray(true,425) should return 381.");' - text: 'gray(true,870) debe devolver 725 .' testString: 'assert.equal(gray(true,870),725,"gray(true,870) should return 725.");' - text: 'gray(false,233) debe devolver 177 .' testString: 'assert.equal(gray(false,233),177,"gray(false,233) should return 177.");' - text: 'gray(false,381) debe devolver 425 .' testString: 'assert.equal(gray(false,381),425,"gray(false,381) should return 425.");' - text: 'gray(false,725) debe devolver 870 .' testString: 'assert.equal(gray(false,725),870,"gray(false,725) should return 870.");' ```
## Challenge Seed
```js function gray(enc, number) { // Good luck! } ```
## Solution
```js // solution required ```