繁体   English   中英

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

[英]Convert Gray Code to Binary and vice versa

我写了这个 function 但无法找出问题所在,请有人帮助我。 它给出 output 为 513。我已经为二进制和灰色添加了 function 请帮助我:谢谢 :)

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

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

几个问题:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM