二进制雷格码(Binary Gray Code)

作者:追风剑情 发布于:2017-11-22 15:47 分类:Algorithms

示例


  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Test5
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. /**
  14. * 雷格码特点
  15. * 1.任意相邻的两个码只有1位二进制数不同
  16. * 2.最大数与最小数之间也仅有1位二进制数不同(即,首尾相连)
  17. */
  18.  
  19. Console.WriteLine("二进制 格雷码->二进制");
  20. Console.WriteLine("abcd efgh");//abcd efgh表示对应的列
  21. //二进制码转雷格码公式为: e=a, f=a^b, g=b^c, h=c^d
  22. //雷格码转二进制码公式为: a=e, b=e^f, c=e^f^g, d=e^f^g^h
  23.  
  24. for (int i = 0; i < 16; i++){
  25. int grayCode = DecimalToGray(i);
  26. Console.WriteLine(string.Format("{0} {1} {2}", IntToBinary(i, 4), IntToBinary(grayCode, 4), IntToBinary(GrayToDecimal(grayCode), 4)));
  27. }
  28.  
  29. Console.WriteLine("二进制码转雷格码公式为: e=a, f=a^b, g=b^c, h=c^d");
  30. Console.WriteLine("雷格码转二进制码公式为: a=e, b=e^f, c=e^f^g, d=e^f^g^h");
  31. Console.Read();
  32. }
  33.  
  34. //二进制码转格雷码
  35. public static int DecimalToGray(int x)
  36. {
  37. return x^(x>>1);
  38. }
  39.  
  40. //格雷码转二进制码
  41. //写法一
  42. //更多代码写法参考: http://blog.csdn.net/jingfengvae/article/details/51691124
  43. public static int GrayToDecimal(int x)
  44. {
  45. int y = x;
  46. while((x>>=1) > 0)
  47. y ^= x;
  48. return y;
  49. }
  50.  
  51. //格雷码转二进制码
  52.         //写法二
  53.         public static int GrayToDecimal2(int x)
  54.         {
  55.             x ^= (x >> 1);
  56.             x ^= (x >> 2);
  57.             x ^= (x >> 4);
  58.             x ^= (x >> 8);
  59.             x ^= (x >> 16);
  60.             return x;
  61.         }
  62.  
  63.  
  64. //整数转二进制串
  65. public static string IntToBinary(int val, int bits = 32)
  66. {
  67. string final = "";
  68.  
  69. for (int i = bits; i > 0; )
  70. {
  71. if (i == 8 || i == 16 || i == 24) final += " ";
  72. final += ((val & (1 << --i)) != 0) ? '1' : '0';
  73. }
  74. return final;
  75. }
  76. }
  77. }


运行测试

111111.png

标签: Algorithms

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号