zoukankan      html  css  js  c++  java
  • 二进制和格雷码转换

    十进制 586 = 二进制 1001001010 = 格雷码 1101101111。

    二进制码 ----> 格雷码(编码):
    从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0)。

    格雷码的是特点是:

    相邻两数的格雷码,仅仅有一位二进制发生变化。
    而且在其范围内的最小值和最大值,也仅仅有一位二进制发生变化。

    例如下面两数:

    最小:二进制0000=格雷码0000
    最大:二进制1111=格雷码1000

    看到了吧,0000 和 1000,仅仅有一位数发生变化。

    -------

    如果在变换的过程中,先把十进制转换成BCD码,这就失去了格雷码的特点。

    因为在BCD码中:

    最小:二进制0000=格雷码0000
    最大:二进制1001=格雷码1101

    可以看出,它们之间有三位发生变化。

    通过BCD码来变换格雷码,思路不对。变换出来的,并不是原数的格雷码。

     

    后记:自然二进制数与格雷码的互换公式与电路

    自然二进制数转换到格雷码
    ------------
    设有 N 位二进制数 B(i),其中 0 <= i <= N - 1;它可以变换成为同样位数的格雷码 G(i)。
    二进制数与格雷码的转换公式如下:

      G(i) = B(i+1) XOR B(i) ; 0 <= i < N - 1
      G(i) = B(i)  ;  i = N - 1

    如果是通过编程计算进行变换,就需要使用这个公式逐位的计算;
    如果是使用硬件电路进行变换,就可以使用做而论道前面在回答问题时给出的电路。

    格雷码转换到自然二进制数
    ------------
    设有 N 位格雷码 G(i),把它转换成自然二进制数的算法如下。

    自然二进制码的最高位等于雷码的最高位;
    自然二进制码的次高位为最高位自然二进制码与次高位格雷码相异或;
    自然二进制码的其余各位与次高位自然二进制码的求法相类似。
    转换公式如下:

      B(i) = G(i)  ;  i = N - 1
      B(i) = B(i+1) XOR G(i)  ; 0 <= i < N - 1

  • 相关阅读:
    国外名校课程视频爆红 网友总结“必杀技”(图)
    设置mysql密码
    Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
    LAMP架构中,php 与 php、php与C语言程序等 之间 的网络通信 问题
    API & ABI
    Linux 6初体验:桌面性能堪比新版Ubuntu
    diff 比较两个文件夹
    11种错误的保养皮肤习惯
    服务器领域Linux击败Windows的5大理由
    CentOS5.5 FTP安装配置
  • 原文地址:https://www.cnblogs.com/shishupeng/p/5609777.html
Copyright © 2011-2022 走看看