在javascript中如何做或门操作

时间:2018-04-23 13:06:20

标签: javascript binary

我正在做黑客等级问题。

function or(a, b){return (a || b);}

function acmTeam(topic) {
  var arr = topic;

  for(var i=0; i<arr.length; i++) {
    var iItem = arr[i];

    for(var j=i+1; j<arr.length; j++) { 
      var jItem = arr[j];
      var orItem = or(iItem, jItem);

      console.log(iItem);
      console.log(jItem);
      console.log('----');
      console.log(orItem);
      console.log();
    } 
  }

}

var topic = [ '10101', '11100', '11010', '00101' ];
var out = acmTeam(topic);

我从here

复制了或门操作

我想我有这样的事情。这似乎不是我所期望的门操作。有什么想法吗?

10101
11100
----
10101

10101
11010
----
10101

10101
00101
----
10101

11100
11010
----
11100

11100
00101
----
11100

11010
00101
----
11010

1 个答案:

答案 0 :(得分:0)

首先使用parseInt将字符串变量转换为base 2变量,然后执行按位OR运算。

结果将以基数10的形式出现。因此,使用toString(2)

再次转换为base 2
   function or(a, b){return (parseInt(a, 2) | parseInt(b,2)).toString(2);}

&#13;
&#13;
function or(a, b){return (parseInt(a, 2) | parseInt(b,2)).toString(2);}

function acmTeam(topic) {
  var arr = topic;

  for(var i=0; i<arr.length; i++) {
var iItem = arr[i];

for(var j=i+1; j<arr.length; j++) { 
  var jItem = arr[j];
  var orItem = or(iItem, jItem);

  console.log(iItem);
  console.log(jItem);
  console.log('----');
  console.log(orItem);
  console.log();
} 
  }

}

var topic = [ '10101', '11100', '11010', '00101' ];
var out = acmTeam(topic);
&#13;
&#13;
&#13;