Dado el código binario de un número como un número decimal, necesitamos convertirlo en su Código Gray equivalente .
Ejemplos:
Input : 1001 Output : 1101 Input : 11 Output : 10
En código gris, solo se cambia un bit en 2 números consecutivos.
Algoritmo:
binary_to_grey(n) if n == 0 grey = 0; else if last two bits are opposite to each other grey = 1 + 10 * binary_to_gray(n/10)) else if last two bits are same grey = 10 * binary_to_gray(n/10))
A continuación se muestra la implementación del enfoque anterior:
CPP
// CPP program to convert Binary to // Gray code using recursion #include <bits/stdc++.h> using namespace std; // Function to change Binary to // Gray using recursion int binary_to_gray(int n) { if (!n) return 0; // Taking last digit int a = n % 10; // Taking second last digit int b = (n / 10) % 10; // If last digit are opposite bits if ((a && !b) || (!a && b)) return (1 + 10 * binary_to_gray(n / 10)); // If last two bits are same return (10 * binary_to_gray(n / 10)); } // Driver Function int main() { int binary_number = 1011101; printf("%d", binary_to_gray(binary_number)); return 0; }
Java
// Java program to convert // Binary code to Gray code import static java.lang.StrictMath.pow; import java.util.Scanner; class bin_gray { // Function to change Binary to // Gray using recursion int binary_to_gray(int n, int i) { int a, b; int result = 0; if (n != 0) { // Taking last digit a = n % 10; n = n / 10; // Taking second last digit b = n % 10; if ((a & ~ b) == 1 || (~ a & b) == 1) { result = (int) (result + pow(10,i)); } return binary_to_gray(n, ++i) + result; } return 0; } // Driver Function public static void main(String[] args) { int binary_number; int result = 0; binary_number = 1011101; bin_gray obj = new bin_gray(); result = obj.binary_to_gray(binary_number,0); System.out.print(result); } } // This article is contributed by Anshika Goyal.
Python3
# Python3 code to convert Binary # to Gray code using recursion # Function to change Binary to Gray using recursion def binary_to_gray( n ): if not(n): return 0 # Taking last digit a = n % 10 # Taking second last digit b = int(n / 10) % 10 # If last digit are opposite bits if (a and not(b)) or (not(a) and b): return (1 + 10 * binary_to_gray(int(n / 10))) # If last two bits are same return (10 * binary_to_gray(int(n / 10))) # Driver Code binary_number = 1011101 print( binary_to_gray(binary_number), end='') # This code is contributed by "Sharad_Bhardwaj".
C#
// C# program to convert // Binary code to Gray code using System; class GFG { // Function to change Binary to // Gray using recursion static int binary_to_gray(int n, int i) { int a, b; int result = 0; if (n != 0) { // Taking last digit a = n % 10; n = n / 10; // Taking second last digit b = n % 10; if ((a & ~ b) == 1 || (~ a & b) == 1) { result = (int) (result + Math.Pow(10,i)); } return binary_to_gray(n, ++i) + result; } return 0; } // Driver Function public static void Main() { int binary_number; binary_number = 1011101; Console.WriteLine(binary_to_gray(binary_number,0)); } } // This article is contributed by vt_m.
PHP
<?php // PHP program to convert Binary to // Gray code using recursion // Function to change Binary to // Gray using recursion function binary_to_gray($n) { if (!$n) return 0; // Taking last digit $a = $n % 10; // Taking second // last digit $b = ($n / 10) % 10; // If last digit are // opposite bits if (($a && !$b) || (!$a && $b)) return (1 + 10 * binary_to_gray($n / 10)); // If last two // bits are same return (10 * binary_to_gray($n / 10)); } // Driver Code $binary_number = 1011101; echo binary_to_gray($binary_number); // This code is contributed by Ajit ?>
Javascript
<script> // JavaScript program to convert // Binary code to Gray code // Function to change Binary to // Gray using recursion function binary_to_gray(n, i) { let a, b; let result = 0; if (n != 0) { // Taking last digit a = n % 10; n = n / 10; // Taking second last digit b = n % 10; if ((a & ~ b) == 1 || (~ a & b) == 1) { result = (result + Math.pow(10,i)); } return binary_to_gray(n, ++i) + result; } return 0; } // Driver code let binary_number; let result = 0; binary_number = 1011101; result = binary_to_gray(binary_number,0); document.write(result); // This code is contributed by code_hunt. </script>
Producción :
1110011
Suponga que el número binario está en el rango de enteros. Para un valor mayor, podemos tomar un número binario como string.
Publicación traducida automáticamente
Artículo escrito por Shahnawaz_Ali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA