Come convertire un codice Gray binario in C

May 2

Come convertire un codice Gray binario in C


codice Gray è un modo alternativo per codificare i numeri utilizzando 1 e 0. codifica grigio prende lo stesso numero di cifre per codificare lo stesso numero di dimensioni - ma i modelli di 1 e 0 sono diversi. Vi è un grande vantaggio di utilizzare il codice grigio: quando si incrementa di una stringa di codice Gray, un solo modifiche cifra. Quando si incrementa una stringa di codice binario, il "portare" può propagarsi per tutta la lunghezza della stringa.

istruzione

1 Iniziare con un algoritmo per la conversione di codice Gray in codice binario. L'algoritmo standard è di lavorare da sinistra a destra attraverso la stringa di codice Gray, scrivendo la stringa di codice binario sotto di essa. Inizia impostando l'intera stringa binaria a 1s. Quindi impostare la cifra più a sinistra della stringa binaria essere lo stesso come la cifra più a sinistra nella stringa di codice Gray. Impostare le cifre rimanenti nella stringa binaria secondo questa regola: Insieme binario posizione della stringa k a 0, se grigia posizione di stringa k è uguale alla posizione di stringa binaria k + 1, dove la posizione k + 1 è a sinistra della posizione k.

2 Sviluppare un algoritmo pseudo-codice per il processo. Se il codice è grigia in matrice G e il codice binario sarà in matrice B, iniziare modificando ogni elemento di B a 1. Poi impostare l'elemento più a sinistra di B uguale all'elemento più a sinistra di G. Quindi si può passare attraverso la matrice e impostare ogni elemento di B correttamente chiedendo se è uguale all'elemento appropriata dell'array G. La pseudo-codice sarebbe: impostare tutte B a 1s, impostare B (max) a G (max), poi eventualmente resettare ogni elemento di B usando la regola "se B (n) = G (n - 1) quindi impostare B (n - 1) a 0. "

3 Scrivere il codice C per l'algoritmo pseudo-codice. E sarebbe simile a questa:

iniziare a (k = 0; k meno-che ARRAY_SIZE; k ++) B [k] = 1; B [ARRAY_SIZE - 1] = G [ARRAY_SIZE - 1]; per (k = ARRAY_SIZE; k maggiore di 0; k--) se (B [k] == G [k - 1]) B [k - 1] = 0 finale.

Dove G è la matrice che contiene il codice Gray, B è la matrice che contiene il codice binario e le dimensioni di entrambe le matrici sono uguali: ARRAY_SIZE.