Método para convertir un número en binario a GRAY
Para convertir un número binario a código Gray, se sigue el siguiente método:
1. Se suma el número en binario con el mismo, pero el segundo sumando debe correrse una cifra a la derecha. Ver el gráfico.
2. Se realiza una suma binaria cifra con cifra sin tomar en cuenta el acarreo y se obtiene la suma total.
3. Al resultado anterior se le elimina la ultima cifra del lado derecho (se elimina el cero que está en rojo), para obtener el código GRAY.
Ejercicios de binario a gray
(1010)2 convertir a gray
1010
1010
----
1111
(110101010001)2 convertir a gray
110101010001
110101010001
------------
101111111001
(101011)2 convertir a gray
101011
101011
--------
111110
Método para convertir código GRAY a binario
Para convertir de códio Gray a Binario, se utiliza un método similar, pero con algunas diferencias. Se aplican las sigientes reglas:· El bit más significativo(el más a la izquierda) es el código binario es el mismo que el bit correspondiente en el codigo Gray.
· Sume cada bit generado del codigo binario al bit del codigo Gray en la siguiente poscion adyacente. Descarte acarreos.
Ejemplo:
Paso 1. El digito del codigo binario mas a la izquierda es el mismo que el digito del codigo Gray mas a la izquierda.
1 | 1 | 0 | 1 | 1 | Gray |
1 | | | | | Binario |
1 | 1 | 0 | 1 | 1 | Gray |
1 | 0 | | | | Binario |
1 | 1 | 0 | 1 | 1 | Gray |
1 | 0 | 0 | | | Binario |
1 | 1 | 0 | 1 | 1 | Gray |
1 | 0 | 0 | 1 | | Binario |
Paso 5. Sume el ultimo bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición. Descarte acarreos.
1 | 1 | 0 | 1 | 1 | Gray |
1 | 0 | 0 | 1 | 0 | Binario |
La conversión ha sido completada; el codigo binario es 10010
Ejercicios
1001 gray= (1110)2
10101111 gray= (11001010)2
bibliografia
http://html.rincondelvago.com/codigos-gray_1.html
http://www.todomonografias.com/electronica-y-electricidad/codigos-gray/
//un metodo en programacion en c++ seria
ResponderEliminar#include
#include
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
void ingresarNumero(int &nro);
void obtenerDigitos(int nro,int a[50], int &n);
void convertirNumero(int a[50], int n, int b[50], int &m);
void mostrarGray(int b[50], int m);
int main( ) {
int nro,a[50],b[50],n=0,m=1,x;
//b[m] empieza en 1 porque b[0] es 1 por defecto
ingresarNumero(nro);
obtenerDigitos(nro,a,n);
convertirNumero(a,n,b,m );
mostrarGray(b,m);
system ("pause");
return 0;
}
void ingresarNumero(int &nro){
cout<<"Ingrese el n\xa3mero binario: ";cin>>nro;
}
void obtenerDigitos(int nro, int a[50], int &n){
do{
a[n]=nro%10;
nro=nro/10;
n++;
}while(nro>0);
}
void convertirNumero(int a[50], int n, int b[50], int &m){
b[0]=a[n-1];
for(int j=n-1;j>0;j=j-1){
if(a[j]==a[j-1]){
b[m]=0;
}else{
b[m]=1;
}
m++;
}
}
void mostrarGray(int b[50], int m){
cout<<"Conversi\xa2n a Gray : ";
for(int j=0;j<=m-1;j++){
cout<<b[j];
}
cout<<endl<<endl;
}
Aquí el código para convertir de gray a binario, muy buen aporte Carlos, me sirvió para hacer esto (y)
ResponderEliminar#include
using namespace std;
void ingresarNumero(int &nro);
void obtenerDigitos(int nro,int a[50], int &n);
void convertirNumero(int a[50], int n, int b[50], int &m);
void mostrarGray(int b[50], int m);
int main( ) {
int nro,a[50],b[50],n=0,m=1,x;
//b[m] empieza en 1 porque b[0] es 1 por defecto
ingresarNumero(nro);
obtenerDigitos(nro,a,n);
convertirNumero(a,n,b,m );
mostrarGray(b,m);
return 0;
}
void ingresarNumero(int &nro){
cout<<"Ingrese el n\xa3mero gray: ";cin>>nro;
}
void obtenerDigitos(int nro, int a[50], int &n){
do{
a[n]=nro%10;
nro=nro/10;
n++;
}while(nro>0);
}
void convertirNumero(int a[50], int n, int b[50], int &m){
b[0]=a[n-1];
for(int j=n-1;j>0;j=j-1){
if(a[j]==a[j-1]){
b[m]=0;
}else{
b[m]=1;
}
a[j-1]=b[m]; // AQUI ESTA EL EXTRA!
m++;
}
}
void mostrarGray(int b[50], int m){
cout<<"Conversi\xa2n a binario : ";
for(int j=0;j<=m-1;j++){
cout<<b[j];
}
cout<<endl<<endl;
}
Hola Carlos y KevRamos buen dia, muchas gracias por su aporte es importante para todos nosotros tener esta utilidad en caso de querer hacer un proyecto o practica sin necesidad de utilizar la logica TTL de hace algunas decadas. saludos
ResponderEliminar