javascriptarraysstringbinarygray-code

Convert Gray Code to Binary and vice versa


I wrote this function but can't find out what's wrong can someone help me please. It gives the output as 513. I have added the function for both binary and gray please help Me! Thanks :)

function xor_c (a,b){
    return (a==b)?'0':'1';
}

function flip(c){
    return (c=='0') ? '1':'0';
}

function BinaryToGray(binary){
let gray='';
gray+=binary[0];
for(let i=1;i<binary.length;i++){
    gray+=xor_c(binary[i-1],binary[i]);
}
return binary;
}

function GrayToBinary(gray){
let binary='';
binary+=gray[0];
for(let i=1;i<gray.length;i++){
    if(gray[i]=='0')
        binary+=binary[i-1];
    else
        binary+=flip(binary[i-1]);
}
return binary;
}

let binary=(01001).toString();
console.log(BinaryToGray(01001));


Solution

  • function xor_c (a,b){
        return (a==b)?'0':'1';
    }
    
    function flip(c){
        return (c=='0') ? '1':'0';
    }
    
    function BinaryToGray(binary){
    binary = binary.split('');
    let gray='';
    gray += binary[0];
    for(let i=1;i<binary.length;i++){
        gray+=xor_c(binary[i-1],binary[i]);
    }
    return gray;
    }
    
    function GrayToBinary(gray){
    let binary='';
    binary+=gray[0];
    for(let i=1;i<gray.length;i++){
        if(gray[i]=='0')
            binary+=binary[i-1];
        else
            binary+=flip(binary[i-1]);
    }
    return binary;
    }
    
    let binary='0101001';
    console.log(BinaryToGray(binary));