-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathgray_to_binary.py
More file actions
67 lines (49 loc) · 1.25 KB
/
gray_to_binary.py
File metadata and controls
67 lines (49 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Python3 program for Binary To Gray
# and Gray to Binary conversion
# Helper function to xor two characters
def xor_c(a, b):
return '0' if(a == b) else '1';
# Helper function to flip the bit
def flip(c):
return '1' if(c == '0') else '0';
# function to convert binary string
# to gray string
def binarytoGray(binary):
gray = "";
# MSB of gray code is same as
# binary code
gray += binary[0];
# Compute remaining bits, next bit
# is computed by doing XOR of previous
# and current in Binary
for i in range(1, len(binary)):
# Concatenate XOR of previous
# bit with current bit
gray += xor_c(binary[i - 1],
binary[i]);
return gray;
# function to convert gray code
# string to binary string
def graytoBinary(gray):
binary = "";
# MSB of binary code is same
# as gray code
binary += gray[0];
# Compute remaining bits
for i in range(1, len(gray)):
# If current bit is 0,
# concatenate previous bit
if (gray[i] == '0'):
binary += binary[i - 1];
# Else, concatenate invert
# of previous bit
else:
binary += flip(binary[i - 1]);
return binary;
# Driver Code
binary = "01001";
print("Gray code of", binary, "is",
binarytoGray(binary));
gray = "01101";
print("Binary code of", gray, "is",
graytoBinary(gray));