56 lines
1.8 KiB
Plaintext
56 lines
1.8 KiB
Plaintext
for r =0 to 31
|
|
print " Decimal "; using( "###", r); " is ";
|
|
B$ =dec2Bin$( r)
|
|
print " binary "; B$; ". Binary "; B$;
|
|
G$ =Bin2Gray$( dec2Bin$( r))
|
|
print " is "; G$; " in Gray code, or ";
|
|
B$ =Gray2Bin$( G$)
|
|
print B$; " in pure binary."
|
|
next r
|
|
|
|
end
|
|
|
|
function Bin2Gray$( bin$) ' Given a binary number as a string, returns Gray code as a string.
|
|
g$ =left$( bin$, 1)
|
|
for i =2 to len( bin$)
|
|
bitA =val( mid$( bin$, i -1, 1))
|
|
bitB =val( mid$( bin$, i, 1))
|
|
AXorB =bitA xor bitB
|
|
g$ =g$ +str$( AXorB)
|
|
next i
|
|
Bin2Gray$ =g$
|
|
end function
|
|
|
|
function Gray2Bin$( g$) ' Given a Gray code as a string, returns equivalent binary num.
|
|
' as a string
|
|
gl =len( g$)
|
|
b$ =left$( g$, 1)
|
|
for i =2 to len( g$)
|
|
bitA =val( mid$( b$, i -1, 1))
|
|
bitB =val( mid$( g$, i, 1))
|
|
AXorB =bitA xor bitB
|
|
b$ =b$ +str$( AXorB)
|
|
next i
|
|
Gray2Bin$ =right$( b$, gl)
|
|
end function
|
|
|
|
function dec2Bin$( num) ' Given an integer decimal, returns binary equivalent as a string
|
|
n =num
|
|
dec2Bin$ =""
|
|
while ( num >0)
|
|
dec2Bin$ =str$( num mod 2) +dec2Bin$
|
|
num =int( num /2)
|
|
wend
|
|
if ( n >255) then nBits =16 else nBits =8
|
|
dec2Bin$ =right$( "0000000000000000" +dec2Bin$, nBits) ' Pad to 8 bit or 16 bit
|
|
end function
|
|
|
|
function bin2Dec( b$) ' Given a binary number as a string, returns decimal equivalent num.
|
|
t =0
|
|
d =len( b$)
|
|
for k =d to 1 step -1
|
|
t =t +val( mid$( b$, k, 1)) *2^( d -k)
|
|
next k
|
|
bin2Dec =t
|
|
end function
|