将格雷码转换为二进制,反之亦然

时间:2021-03-20 19:53:57

标签: javascript arrays string binary gray-code

我写了这个函数,但不知道出了什么问题,有人可以帮我吗。它给出的输出为 513。我已经添加了二进制和灰色的函数,请帮帮我!谢谢:)

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));

2 个答案:

答案 0 :(得分:0)

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));

答案 1 :(得分:0)

一些问题:

  • 你的 BinaryToGray 有一个错误的 return:它只是返回给定的参数。它应该返回结果,即 return gray;

  • 主代码将一个数字传递给该函数,而该函数需要一个二进制表示法的字符串。主要代码有生成字符串的痕迹(到变量 binary),但默认情况下 toString 将生成十进制表示法的字符串。您应该将参数传递给 toString 以获得二进制表示:toString(2)

  • 我想您打算将 01001 设为二进制文字,但它确实是以 10 为基数的一个:一千零一。您必须在它前面加上 0b,例如 0b01001。

相关问题