Dado un número decimal n. Encuentra el código gris de este número en forma decimal.
Ejemplos:
Entrada: 7
Salida: 4
Explicación: 7 se representa como 111 en forma binaria. El código gray equivalente
al 111 es 100 en forma binaria, cuyo equivalente decimal es 4.Entrada: 10
Salida: 15
Explicación: 10 se representa como 1010 en forma binaria. El código gris equivalente
a 1010 es 1111 en forma binaria, cuyo equivalente decimal es 15.
La siguiente tabla muestra la conversión de valores de código binario a valores de código gris:
valor decimal | Equivalente binario | Equivalente de código gris | Valor decimal del equivalente de código Gray |
---|---|---|---|
0 | 000 | 000 | 0 |
1 | 001 | 001 | 1 |
2 | 010 | 011 | 3 |
3 | 011 | 010 | 2 |
4 | 100 | 110 | 6 |
5 | 101 | 111 | 7 |
6 | 110 | 101 | 5 |
7 | 111 | 100 | 4 |
A continuación se muestra el enfoque para la conversión de valores de código decimal a valores de código gris.
Sea G(n) el equivalente en código Gray de la representación binaria n. Considere bits de un número n y un bit de número G(n). Tenga en cuenta que los bits establecidos más a la izquierda de n y G(n) están en la misma posición. Sea esta posición i y las posiciones a la derecha sean (i+1), (i+2), etc. El (i+1) -ésimo bit en G(n) es 0 si (i+1)-ésimo bit en n es 1 y viceversa también es cierto. Lo mismo es cierto para (i+2)-th bits, etc. Así tenemos G (n) = n xor (n >> 1):
C++
// CPP Program to convert given // decimal number into decimal // equivalent of its gray code form #include <bits/stdc++.h> using namespace std; int grayCode(int n) { /* Right Shift the number by 1 taking xor with original number */ return n ^ (n >> 1); } // Driver Code int main() { int n = 10; cout << grayCode(n) << endl; return 0; }
Java
// Java Program to convert given // decimal number into decimal // equivalent of its gray code form class GFG { static int grayCode(int n) { // Right Shift the number // by 1 taking xor with // original number return n ^ (n >> 1); } // Driver Code public static void main(String[] args) { int n = 10; System.out.println(grayCode(n)); } } // This code is contributed by // Smitha Dinesh Semwal
Python3
# Python 3 Program to convert # given decimal number into # decimal equivalent of its # gray code form def grayCode(n): # Right Shift the number # by 1 taking xor with # original number return n ^ (n >> 1) # Driver Code n = 10 print(grayCode(n)) # This code is contributed # by Smitha Dinesh Semwal
C#
// C# Program to convert given // decimal number into decimal // equivalent of its gray code form using System; public class GFG { // Function for conversion public static int grayCode(int n) { // Right Shift the number // by 1 taking xor with // original number return n ^ (n >> 1); } // Driver Code static public void Main () { int n = 10; Console.WriteLine(grayCode(n)); } } // This code is contributed by Ajit.
PHP
<?php // PHP Program to convert given // decimal number into decimal // equivalent of its gray code form function grayCode($n) { /* Right Shift the number by 1 taking xor with original number */ return $n ^ ($n >> 1); } // Driver Code $n = 10; echo grayCode($n) ; // This code is contributed by nitin mittal. ?>
Javascript
<script> // Javascript Program to convert given // decimal number into decimal // equivalent of its gray code form function grayCode(n) { /* Right Shift the number by 1 taking xor with original number */ return n ^ (n >> 1); } // Driver Code var n = 10; document.write( grayCode(n) ); </script>
15
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Hallar el código Gray inverso
Dado un número equivalente decimal n de un código Gray. Encuentra su número original en forma decimal.
Ejemplos:
Entrada: 4
Salida: 7Entrada : 15
Salida : 10
A continuación se muestra el enfoque para la conversión de valores de código gris a valores de código decimal.
Iremos de los bits más antiguos a los más jóvenes (incluso el bit más pequeño tiene el número 1, y el bit más antiguo tiene el número k). Obtenemos tales relaciones entre los bits del n i número n y los bits del g i número g:
nk = gk, nk-1 = gk-1 xor nk = gk xor gk-1 nk-2 = gk-2 xor nk-1 = gk xor gk-1 xor gk-2 nk-3 = gk-3 xor nk-2 = gk xor gk-1 xor gk-2 xor gk-3 ...
C++
// CPP Program to convert given // decimal number of gray code // into its inverse in decimal form #include <bits/stdc++.h> using namespace std; int inversegrayCode(int n) { int inv = 0; // Taking xor until n becomes zero for (; n; n = n >> 1) inv ^= n; return inv; } // Driver Code int main() { int n = 15; cout << inversegrayCode(n) << endl; return 0; }
Java
// Java Program to convert given // decimal number of gray code // into its inverse in decimal form import java.io.*; class GFG { // Function to convert given // decimal number of gray code // into its inverse in decimal form static int inversegrayCode(int n) { int inv = 0; // Taking xor until n becomes zero for ( ; n != 0 ; n = n >> 1) inv ^= n; return inv; } // Driver code public static void main (String[] args) { int n = 15; System.out.println(inversegrayCode(n)); } } // This code is contributed by Ajit.
Python3
# Python3 Program to convert # given decimal number of # gray code into its inverse # in decimal form def inversegrayCode(n): inv = 0; # Taking xor until # n becomes zero while(n): inv = inv ^ n; n = n >> 1; return inv; # Driver Code n = 15; print(inversegrayCode(n)); # This code is contributed # by mits
C#
// C# Program to convert given // decimal number of gray code // into its inverse in decimal form using System; class GFG { // Function to convert given // decimal number of gray code // into its inverse in decimal form static int inversegrayCode(int n) { int inv = 0; // Taking xor until n becomes zero for ( ; n != 0 ; n = n >> 1) inv ^= n; return inv; } // Driver code public static void Main () { int n = 15; Console.Write(inversegrayCode(n)); } } // This code is contributed by nitin mittal.
PHP
<?php // PHP Program to convert given // decimal number of gray code // into its inverse in decimal form function inversegrayCode( $n) { $inv = 0; // Taking xor until // n becomes zero for (; $n; $n = $n >> 1) $inv ^= $n; return $inv; } // Driver Code $n = 15; echo inversegrayCode($n); // This code is contributed by anuj_67. ?>
Javascript
<script> // JavaScript Program to convert given // decimal number of gray code // into its inverse in decimal form function inversegrayCode(n) { let inv = 0; // Taking xor until n becomes zero for (; n; n = n >> 1) inv ^= n; return inv; } // Driver Code let n = 15; document.write(inversegrayCode(n)); </script>
10
Complejidad temporal: O(log n)
Espacio auxiliar: O(1)
Sugiera si alguien tiene una mejor solución que sea más eficiente en términos de espacio y tiempo.
Este artículo es una contribución de Aarti_Rathi. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por Nishant Tanwar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA