日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

格雷码转十进制 c语言,格雷码的转换方法

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 格雷码转十进制 c语言,格雷码的转换方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這種方法基于格雷碼是反射碼的事實,利用遞歸的如下規則來構造: 1位格雷碼有兩個碼字 (n+1)位格雷碼中的前2n個碼字等于n位格雷碼的碼字,按順序書寫,加前綴0 (n+1)位格雷碼中的后2n個碼字等于n位格雷碼的碼字,按逆序書寫,加前綴1 n+1位格雷碼的集合 = n位格雷碼集合(順序)加前綴0 + n位格雷碼集合(逆序)加前綴1 2位格雷碼3位格雷碼4位格雷碼4位自然二進制碼00

01

11

10 000

001

011

010

110

111

101

100 0000

0001

0011

0010

0110

0111

0101

0100

1100

1101

1111

1110

1010

1011

1001

1000 0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111 二進制碼→格雷碼(編碼):

此方法從對應的n位二進制碼字中直接得到n位格雷碼碼字,步驟如下: 對n位二進制的碼字,從右到左,以0到n-1編號 如果二進制碼字的第i位和i+1位相同,則對應的格雷碼的第i位為0,否則為1(當i+1=n時,二進制碼字的第n位被認為是0,即第n-1位不變) 公式表示:(G:格雷碼,B:二進制碼) 例如:二進制碼0101,為4位數,所以其所轉為之格雷碼也必為4位數,因此可取轉成之二進位碼第五位為0,即0 b3 b2 b1 b0。

0 xor 0=0,所以g3=0

0 xor 1=1,所以g2=1

1 xor 0=1,所以g1=1

0 xor 1=1,所以g0=1

因此所轉換為之格雷碼為0111 格雷碼→二進制碼(解碼):

從左邊第二位起,將每位與左邊一位解碼后的值異或,作為該位解碼后的值(最左邊一位依然不變)。依次異或,直到最低位。依次異或轉換后的值(二進制數)就是格雷碼轉換后二進制碼的值。

公式表示:(G:格雷碼,B:二進制碼)

原碼:p[n:0];格雷碼:c[n:0](n∈N);編碼:c=G(p);解碼:p=F(c);

書寫時按從左向右標號依次減小,即MSB->LSB,編解碼也按此順序進行 舉例:

如果采集器器采到了格雷碼:1010

就要將它變為自然二進制:

0 與第四位 1 進行異或結果為 1

上面結果1與第三位0異或結果為 1

上面結果1與第二位1異或結果為 0

上面結果0與第一位0異或結果為 0

因此最終結果為:1100 這就是二進制碼即十進制 12

當然人看時只需對照表1一下子就知道是12 ...................c[n]=p[n],

解碼: 利用卡諾圖相鄰兩格只有一位變化以及卡諾圖的變量取值以低階格雷碼的順序排布的特征,可以遞歸得到高階格雷碼。由于此方法相對繁瑣,使用較少。生成格雷碼的步驟如下: 將卡諾圖變量分為兩組,變量數目相近(最好相等) 以邏輯變量高位在左低位在右建立卡諾圖 從卡諾圖的左上角以之字形到右上角最后到左下角遍歷卡諾圖,依次經過格子的變量取值即為典型格雷碼的順序 三位格雷碼(三位格雷碼由建立在二位基礎上) AB╲ C 0 1 00 0→ 1↓ 01 ↓2 ←3 11 6→ 7↓ 10 4 ←5 格雷碼次序:000起點→001→011→010→110→111→101→100終點

四位格雷碼 AB╲CD 00 01 11 10 00 0→ 1→ 3→ 2↓ 01 ↓4 ←5 ←7 ←6 11 12→ 13→ 15→ 14↓ 10 8 ←9 ←11 ←10 格雷碼次序:0000起點→0001→0011→0010→0110→0111→0101→0100→1100→1101→

1111→1110→1010→1011→1001→1000終點 用異或代替加減進行二進制豎式乘除,稱為異或乘除,它的特點是無進退位。

如:10101除以11將變成1100余1。

二進制轉格雷碼:

只要異或乘以二分之三,即二進制的1.1,然后忽略小數部分;也可以理解成異或乘以三(即11),再右移一位。

格雷碼轉二進制:

異或除以三分之二,即除以1.1,忽略余數;或者左移一位,再異或除以三,忽略余數。

總結

以上是生活随笔為你收集整理的格雷码转十进制 c语言,格雷码的转换方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。