0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

格雷碼與二進(jìn)制的轉(zhuǎn)換

PoisonApple ? 來源:網(wǎng)絡(luò)整理 ? 2018-03-02 15:48 ? 次閱讀

一、什么是格雷碼?

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

格雷碼與二進(jìn)制的轉(zhuǎn)換

二、二進(jìn)制格雷碼與自然二進(jìn)制碼的互換

1、二進(jìn)制碼轉(zhuǎn)換成二進(jìn)制格雷碼

二進(jìn)制碼轉(zhuǎn)換成二進(jìn)制格雷碼,其法則是保留二進(jìn)制碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進(jìn)制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類似。

格雷碼與二進(jìn)制的轉(zhuǎn)換

轉(zhuǎn)換代碼:

//根據(jù)二進(jìn)制轉(zhuǎn)換成格雷碼的法則,可以得到以下的代碼:

static unsigned int DecimaltoGray(unsigned int x)

{

return x^(x》》1);

}

//以上代碼實(shí)現(xiàn)了unsigned int型數(shù)據(jù)到格雷碼的轉(zhuǎn)換,最高可轉(zhuǎn)換32位自然二進(jìn)制碼,超出32位將溢出。

static int DecimaltoGray( int x)

{

return x^(x》》1);

}

//以上代碼實(shí)現(xiàn)了 int型數(shù)據(jù)到格雷碼的轉(zhuǎn)換,最高可轉(zhuǎn)換31位自然二進(jìn)制碼,超出31位將溢出。 12345678910111213

2、二進(jìn)制格雷碼轉(zhuǎn)換成二進(jìn)制碼

二進(jìn)制格雷碼轉(zhuǎn)換成二進(jìn)制碼,其法則是保留格雷碼的最高位作為自然二進(jìn)制碼的最高位,而次高位自然二進(jìn)制碼為高位自然二進(jìn)制碼與次高位格雷碼相異或,而自然二進(jìn)制碼的其余各位與次高位自然二進(jìn)制碼的求法相類似。

格雷碼與二進(jìn)制的轉(zhuǎn)換

轉(zhuǎn)換代碼:

根據(jù)二進(jìn)制格雷碼轉(zhuǎn)換成自然二進(jìn)制碼的法則,可以得到以下的三種代碼方式:

? 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;

? }

//以上代碼實(shí)現(xiàn)了unsigned int型數(shù)據(jù)到自然二進(jìn)制碼的轉(zhuǎn)換,最高可轉(zhuǎn)換32位格雷碼,超出32位將溢出。將數(shù)據(jù)類型改為I

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    786

    瀏覽量

    41564
  • 格雷碼
    +關(guān)注

    關(guān)注

    2

    文章

    34

    瀏覽量

    13167
收藏 人收藏

    評論

    相關(guān)推薦

    什么是

    (Gray code),又叫循環(huán)二進(jìn)制碼或反射二進(jìn)制碼 在數(shù)字系統(tǒng)中只能識別0和1,各種數(shù)據(jù)要轉(zhuǎn)換
    發(fā)表于 11-11 09:34 ?7274次閱讀
    什么是<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>

    二進(jìn)制與自然二進(jìn)制碼的互換分析

    其中采用循環(huán)二進(jìn)制編碼的絕對式編碼器,其輸出信號是一種數(shù)字排序,不是權(quán)重碼,每一位沒有確定的大小,不能直接進(jìn)行比較大小和算術(shù)運(yùn)算,也不能直接轉(zhuǎn)換成其他信號,要經(jīng)過一次變換,變成自然二進(jìn)制碼
    的頭像 發(fā)表于 09-23 16:23 ?6774次閱讀

    二進(jìn)制與自然二進(jìn)制碼的互換

    。而絕對式編碼器是直接輸出數(shù)字量的傳感器,它是利用自然二進(jìn)制或循環(huán)二進(jìn)制)方式進(jìn)行光電轉(zhuǎn)換
    發(fā)表于 03-08 14:16

    簡介及格二進(jìn)制轉(zhuǎn)換程序

    簡介及格二進(jìn)制轉(zhuǎn)換程序
    發(fā)表于 04-22 09:00

    二進(jìn)制與格轉(zhuǎn)換

    二進(jìn)制與格轉(zhuǎn)換
    發(fā)表于 08-08 15:51

    二進(jìn)制與格轉(zhuǎn)換

    本帖最后由 eehome 于 2013-1-5 10:01 編輯 二進(jìn)制與格轉(zhuǎn)換
    發(fā)表于 08-14 09:42

    簡介及格二進(jìn)制轉(zhuǎn)換程序

    簡介及格二進(jìn)制轉(zhuǎn)換程序
    發(fā)表于 01-16 11:52 ?4981次閱讀

    轉(zhuǎn)二進(jìn)制方法

    二進(jìn)位碼第n位 = 二進(jìn)位碼第(n+1)位+第n位。因?yàn)?b class='flag-5'>二進(jìn)位碼和
    發(fā)表于 11-11 09:38 ?7672次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>轉(zhuǎn)<b class='flag-5'>二進(jìn)制</b>方法

    二進(jìn)制轉(zhuǎn)換的Verilog HDL源代碼

    電子發(fā)燒友網(wǎng)核心提示: 本例程是Verilog HDL源代碼:關(guān)于基本組合邏輯功能中二進(jìn)制轉(zhuǎn)換的功能實(shí)現(xiàn)源代碼。注意:程序運(yùn)行在不同
    發(fā)表于 10-15 11:52 ?3707次閱讀

    編碼規(guī)則_有什么規(guī)律

    典型的二進(jìn)制簡稱,因1953年公開的弗蘭
    的頭像 發(fā)表于 03-02 14:29 ?5.5w次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>編碼規(guī)則_<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>有什么規(guī)律

    二進(jìn)制轉(zhuǎn)公式

    在一組數(shù)的編碼中,若任意兩個(gè)相鄰的代碼只有一位二進(jìn)制數(shù)不同,則稱這種編碼為(Gray Code),另外由于最大數(shù)與最小數(shù)之間也僅一位數(shù)不同,即“首尾相連”,因此又稱循環(huán)
    的頭像 發(fā)表于 03-02 14:47 ?3.9w次閱讀
    <b class='flag-5'>二進(jìn)制</b>轉(zhuǎn)<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>公式

    FPGA學(xué)習(xí)系列:33. 二進(jìn)制轉(zhuǎn)轉(zhuǎn)二進(jìn)制的設(shè)計(jì)

    設(shè)計(jì)背景:典型的二進(jìn)制(Binary Gray Code)簡稱
    的頭像 發(fā)表于 08-28 16:16 ?3248次閱讀

    如何把二進(jìn)制轉(zhuǎn)換?是如何判斷讀空寫滿呢?

    在傳遞讀寫時(shí)鐘域的指針使用來傳遞,如何把二進(jìn)制轉(zhuǎn)換
    的頭像 發(fā)表于 09-15 09:38 ?8252次閱讀
    如何把<b class='flag-5'>二進(jìn)制</b><b class='flag-5'>轉(zhuǎn)換</b>為<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>?<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>是如何判斷讀空寫滿呢?

    轉(zhuǎn)換二進(jìn)制編碼器的方法

    絕對編碼器中的傳感器輸出格序列,需要一些復(fù)雜的轉(zhuǎn)換方法才能正確使用。本文展示了如何獲取絕對編碼器使用的
    的頭像 發(fā)表于 05-05 15:41 ?6410次閱讀
    將<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b><b class='flag-5'>轉(zhuǎn)換</b>為<b class='flag-5'>二進(jìn)制</b>編碼器的方法

    二進(jìn)制轉(zhuǎn)換

    是一種循環(huán)二進(jìn)制編碼,特點(diǎn)是相鄰數(shù)變化時(shí)只有一位數(shù)據(jù)跳變。
    的頭像 發(fā)表于 01-17 11:15 ?4975次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>與<b class='flag-5'>二進(jìn)制</b><b class='flag-5'>轉(zhuǎn)換</b>