日韩欧美视频第二区,秋霞成人午夜鲁丝一区二区三区,美女日批视频在线观看,av在线不卡免费

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 基礎入門 >> 數字電子電路 >> 正文

格雷碼與二進制的轉換

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2022/6/1

一、什么是格雷碼?

格雷碼,又叫循環二進制碼或反射二進制碼,格雷碼是我們在工程中常會遇到的一種編碼方式,它的基本的特點就是任意兩個相鄰的代碼只有一位二進制數不同,這點在下面會詳細講解到。格雷碼的基本特點就是任意兩個相鄰的代碼只有一位二進制數不同,這點很重要。常用的二進制數與格雷碼間的轉換關系如下表:

自然數二進制數格雷碼列表 

二、二進制格雷碼與自然二進制碼的互換

1、二進制碼轉換成二進制格雷碼
  二進制碼轉換成二進制格雷碼,其法則是保留二進制碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類似。
 二進制格雷碼與自然二進制碼的互換  
  
 轉換代碼:
 

 //根據二進制轉換成格雷碼的法則,可以得到以下的代碼:
static unsigned int DecimaltoGray(unsigned int x)
{
return x^(x>>1);
}


//以上代碼實現了unsigned int型數據到格雷碼的轉換,最高可轉換32位自然二進制碼,超出32位將溢出。 
static int DecimaltoGray( int x)
{
return x^(x>>1);
}


//以上代碼實現了 int型數據到格雷碼的轉換,最高可轉換31位自然二進制碼,超出31位將溢出。 

2、二進制格雷碼轉換成二進制碼
二進制格雷碼轉換成二進制碼,其法則是保留格雷碼的最高位作為自然二進制碼的最高位,而次高位自然二進制碼為高位自然二進制碼與次高位格雷碼相異或,而自然二進制碼的其余各位與次高位自然二進制碼的求法相類似。 
二進制格雷碼轉換成二進制碼 
 轉換代碼:

根據二進制格雷碼轉換成自然二進制碼的法則,可以得到以下的三種代碼方式: 
       static unsigned int GraytoDecimal(unsigned int x)
       {
          unsigned int y = x;
          while(x>>=1)
            y ^= x;
          return y;
       }      
       static unsigned int GraytoDecimal(unsigned int x)
       {
          x^=x>>16;
          x^=x>>8;
          x^=x>>4;
          x^=X>>2;
          x^=x^1;
          return x;
       }      
       static unsigned int GraytoDecimal(unsigned int x)
       {
          int i;
          for(i=0;(1<<i)<sizeof(x)*8;i++)
          {
             x^=x>>(1<<i);
          }
          return x;
       }       
  //以上代碼實現了unsigned int型數據到自然二進制碼的轉換,最高可轉換32位格雷碼,
超出32位將溢出。將數據類型改為int型即可實現31位格雷碼轉換。
Tags:格雷碼,二進制,數字電路  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
最新推薦
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
主站蜘蛛池模板: 苗栗市| 额济纳旗| 神木县| 安义县| 石景山区| 改则县| 长海县| 邢台县| 焉耆| 麻城市| 鄄城县| 凉城县| 滦南县| 揭阳市| 无锡市| 甘德县| 竹山县| 大名县| 玉环县| 拉孜县| 巴里| 定结县| 于田县| 阿拉善左旗| 西昌市| 泗洪县| 郯城县| 大足县| 兴义市| 游戏| 克拉玛依市| 百色市| 宁南县| 合水县| 礼泉县| 临海市| 宽城| 永清县| 太原市| 镇康县| 渭源县|