El código binario de un número es la representación de un número en el sistema numérico binario (base 2). En el sistema numérico binario, cada número se expresa usando solo dos literales (0 y 1). Cada uno de estos literales se llama un bit . El sistema numérico binario es muy útil en circuitos electrónicos digitales.
El Código Gray de un número es la representación de un número usando literales binarios. Pero la diferencia entre el código binario y el código Gray es que, en el código Gray, cada par de números consecutivos difiere solo en un bit. Los códigos grises son muy útiles para la implementación de K-Maps y la corrección de errores.
Ejemplo:
Binary -> 0100 Gray -> 0110 Binary -> 0101 Gray -> 0111
Un código Gray se puede convertir en un código binario y viceversa.
Conversión de binario a gris:
Un código binario se puede convertir en su código Gray equivalente como:
- El MSB (bit más significativo) del código binario será el MSB del código Gray equivalente.
- Todos los bits restantes se obtienen realizando la operación XOR en el bit en esa posición con el bit en la posición anterior en la string binaria.
Example: Binary -> 0011010101 0 XOR 0 XOR 1 XOR 1 XOR 0 XOR 1 XOR 0 XOR 1 XOR 0 XOR 1 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ Gray -> 0 0 1 0 1 1 1 1 1 1 Binary -> 0100110 Gray -> 0110101
Código 1:
Usamos ‘^’ para realizar la operación Xor convirtiendo la string en un valor entero usando la función Integer.parseInt() y luego realizando xor n ellos.
Java
// Java program to demonstrate Binary // to Gray conversion import java.io.*; class GFG { // converts the given binary string into its equivalent // gray code public static void toGray(String binary) { // a String variable to store the obtained gray // string. // the MSB of the gray code is the same as // the MSB of the binary string, i.e., binary[0] String gray = new String(); gray += binary.charAt(0); for (int i = 1; i < binary.length(); i++) { // perform XOR on the previous bit and the // current bit of the binary string gray += (Integer.parseInt(String.valueOf(binary.charAt(i - 1))) ^ Integer.parseInt(String.valueOf(binary.charAt(i)))); } System.out.println("The gray code of " + binary + " is : " + gray); } public static void main(String[] args) { // a String variable to store the given binary // string String binary = "0011010101"; toGray(binary); } }
The gray code of 0011010101 is : 0010111111
Código 2:
Creamos una función separada definida por el usuario llamada xOR(char a, char b) que nos devuelve el xor de dos números a y b.
Java
// Java program to demonstrate Binary // to Gray conversion import java.io.*; class GFG { // an auxiliary method to perform XOR on two given // literals public static int xOR(char a, char b) { // return 1 if both bits are not same if (a != b) return 1; // else return 0 return 0; } // converts the given binary string into its equivalent // gray code public static void toGray(String binary) { String gray = new String(); gray += binary.charAt(0); // for all the other bits, traverse through the // binary string for (int i = 1; i < binary.length(); i++) { // calling xOR() method on the previous bit and // the current bit of the binary string gray += xOR(binary.charAt(i - 1), binary.charAt(i)); } System.out.println("The gray code of " + binary + " is : " + gray); } // Driver method public static void main(String[] args) { // a String variable to store the given binary // string String binary = "0011010101"; toGray(binary); } }
The gray code of 0011010101 is : 0010111111