十進位制轉格雷碼

2021-10-10 08:23:54 字數 947 閱讀 4054

公式表示: g[i] = b[i] ^ b[i+1](g:格雷碼,b:二進位製碼)

也就是第i位格雷碼等於當前二進位制位和前面更高為的異或。

那怎麼實現讓當前位和更高位異或呢?

第一種方法是先把所有的向左移,在把所有位同時異或。

假入我們要求10110(b)的格雷碼,我們可以通過先將它向左移1位,也就是先把高位降1位,這樣就可以直接通過10110 ^ 1011得到對應的格雷碼。

**實現

class

solution

return ans;

}}

第二種是對二進位製碼進行按位遍歷,逐個求出每一位格雷碼。

1位格雷碼有兩個碼字

(n+1)位格雷碼中的前2n個碼字等於n位格雷碼的碼字,按順序書寫,加字首0

(n+1)位格雷碼中的後2n個碼字等於n位格雷碼的碼字,按逆序書寫,加字首1

n+1位格雷碼的集合 = n位格雷碼集合(順序)加字首0 + n位格雷碼集合(逆序)加字首1

可以參考:格雷碼

**實現:

class

solution

public

void

code

(list

ans,

int head,

int n)

code

(ans, head <<

1, n -1)

;}}

只是將遞迴用遞推實現,和遞迴是一樣的思路。

**實現:

class

solution

head <<=1;

}return ans;

}}

m進製轉十進位制

題目描述 description 將m進製數n轉化成乙個十進位制數 m 16 題目保證轉換後的十進位制數 100 輸入描述 input description 共一行n和m 輸出描述 output description 共乙個數 表示m進製的n化成十進位制的數 樣例輸入 sample input ...

十六進製制轉十進位制

create function fn hextobinary hex varchar 8 returns varchar 255 asbegin declare base tinyint declare string varchar 255 declare return varchar 255 de...

十進位制轉十六進製制

問 題 描 述 十 六 進 制 數 是 在 程 序 設 計 時 經 常 要 使 用 到 的 一 種 整 數 的 表 示 方 式 它 有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 共 16 個符號,分別表示十進位制數的 0 15。十六進製制的計數方法是滿16 進 1,所以十進位制數...