0

我写了这个函数,但无法找出问题所在,有人可以帮帮我。它给出的输出为 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));

4

2 回答 2

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

于 2021-03-20T20:37:49.570 回答
0

几个问题:

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

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

  • 我想你打算 01001 是一个二进制文字,但它实际上是一个以 10 为底的:一千零一。您必须0b在其前面添加,例如 0b01001。

于 2021-03-20T20:46:33.803 回答