我正在為一個 python 專案作業,我想知道以下是否可能:
目前我有一個存盤為字串的灰度代碼,即:“1000”,我想將其轉換為整數(十進制,base10)值-> 15
uj5u.com熱心網友回復:
從羅塞塔代碼:
def gray_decode(n):
m = n >> 1
while m:
n ^= m
m >>= 1
return n
這需要一個int
作為輸入,因此您必須在呼叫函式之前決議字串:
a = "1000"
print(gray_decode(int(a, 2)))
uj5u.com熱心網友回復:
這里有一個很好的例子 ,要點是:
n = '1000'
n = int(n, 2) # convert to int
mask = n
while mask != 0:
mask >>= 1
n ^= mask
uj5u.com熱心網友回復:
下表顯示了二進制碼值到格雷碼值的轉換:
十進制值 | 二進制等價物 | 格雷碼等效 | 格雷碼等效的十進制值 |
---|---|---|---|
0 | 000 | 000 | 0 |
1 | 001 | 001 | 1 |
2 | 010 | 011 | 3 |
3 | 011 | 010 | 2 |
4 | 100 | 110 | 6 |
5 | 101 | 111 | 7 |
6 | 110 | 101 | 5 |
7 | 111 | 100 | 4 |
試試這個代碼
從十進制到格雷碼
def grayCode(n):
# Right Shift the number
# by 1 taking xor with
# original number
return n ^ (n >> 1)
# Driver Code
n = "1000"
print(grayCode(int(n)))
從灰碼到十進制
def inversegrayCode(n):
inv = 0;
# Taking xor until
# n becomes zero
while(n):
inv = inv ^ n;
n = n >> 1;
return inv;
# Driver Code
n = "15";
print(inversegrayCode(int(n)));
來源:geeksforgeeks
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469343.html
下一篇:輸入不當需要列印錯誤資訊;驗證