One-hot
# One-hot

| Binario | Código Gray | One-hot |
| - | - | - |
| 000 | 000 | 00000001 |
| 001 | 001 | 00000010 |
| 010 | 011 | 00000100 |
| 011 | 010 | 00001000 |
| 100 | 110 | 00010000 |
| 101 | 111 | 00100000 |
| 110 | 101 | 01000000 |
| 111 | 100 | 10000000 |

En circuitos digitales y aprendizaje automático, one-hot es un grupo de bits entre los cuales las combinaciones legales de valores son solo aquellas con un solo bit alto (1) y todas las demás bajas (0). Una implementación similar en la que todos los bits son '1', excepto uno '0', a veces se llama one-cold. En estadística, las variables representan una técnica similar para representar datos categóricos.

## Aplicaciones

La codificación One-hot se usa a menudo para indicar el estado de una máquina de estados . Cuando se utiliza código binario o gris, se necesita un decodificador para determinar el estado. Sin embargo, una máquina de estado one-hot, no necesita un decodificador como la máquina de estado está en el n-ésimo estado si y sólo si el n-ésimo bit es alto (1).

Un contador de anillo con 15 estados ordenados secuencialmente es un ejemplo de una máquina de estados. Una implementación 'one-hot' tendría 15 flip flops encadenados en serie con la salida Q de cada flip flop conectada a la entrada D de la siguiente y la entrada D del primer flip flop conectada a la salida Q del 15 flip flop . El primer flip flop en la cadena representa el primer estado, el segundo representa el segundo estado, y así sucesivamente hasta el 15º flip flop que representa el último estado. Al restablecer la máquina de estado, todos los flip flops se restablecen a '0', excepto el primero en la cadena que se establece en '1'. El siguiente clock que llega a los flip flop avanza el bit 'hot' al segundo flip flop. El bit 'hot' avanza de esta manera hasta el estado 15, después de lo cual la máquina de estado vuelve al primer estado.

Un decodificador de dirección se convierte de código binario o gris a una representación one-hot. Un codificador de prioridad convierte de una representación one-hot a código binario o gris.

En el procesamiento de lenguaje natural, un vector one-hot es una matriz 1 × N (vector) utilizada para distinguir cada palabra en un vocabulario de cada otra palabra del vocabulario. El vector consta de 0 en todas las celdas, con la excepción de un solo 1 en una celda utilizada únicamente para identificar la palabra.

## Diferencias con otros métodos de codificación.

### Ventajas

* Determinar el estado tiene un costo bajo y constante de acceder a un flip-flop
* Cambiar el estado tiene el costo constante de acceder a dos flip-flops
* Fácil de diseñar y modificar
* Fácil para detectar estados ilegales
* Aprovecha los abundantes flip flops de un FPGA

El uso de una implementación one-hot generalmente permite que una máquina de estado se ejecute a una velocidad de reloj más rápida que cualquier otra codificación para esa máquina de estado.

### Desventajas

* Requiere más flip-flops que otras codificaciones, por lo que es poco práctico para dispositivos PAL
* Muchos de los estados son ilegales.
