将格雷码转换为二进制,反之亦然
Convert Gray Code to Binary and vice versa
我写了这个函数,但找不到问题所在,有人可以帮助我吗?它给出的输出为 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));
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 给出的参数。它应该 return 结果,即 return gray;
主代码将一个数字传递给该函数,而该函数需要一个二进制表示法的字符串。主代码有生成字符串的痕迹(给变量binary
),但是toString
默认会生成十进制的字符串。您应该将参数传递给 toString
以获得二进制表示:toString(2)
.
我想您希望 01001 成为二进制文字,但它实际上是以 10 为基数的 1:一千零一。您必须在其前面加上 0b
,例如 0b01001.
我写了这个函数,但找不到问题所在,有人可以帮助我吗?它给出的输出为 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));
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 给出的参数。它应该 return 结果,即return gray;
主代码将一个数字传递给该函数,而该函数需要一个二进制表示法的字符串。主代码有生成字符串的痕迹(给变量
binary
),但是toString
默认会生成十进制的字符串。您应该将参数传递给toString
以获得二进制表示:toString(2)
.我想您希望 01001 成为二进制文字,但它实际上是以 10 为基数的 1:一千零一。您必须在其前面加上
0b
,例如 0b01001.