请解释余数运算符如何在这里工作?

时间:2017-10-26 20:48:52

标签: javascript

我不明白== 0如何与代码的remainder部分一起使用,例如(4+4) % 2 == 0,不会出现为4代码为其提供truefalsetruefalse等。

var size = 8;

var board = "";

for (var y = 0; y < size; y++) {
  for (var x = 0; x < size; x++) {
    if ((x + y) % 2 == 0)
      board += " ";
    else
      board += "#";
  }
  board += "\n";
}

console.log(board);

5 个答案:

答案 0 :(得分:0)

var size = 8;

var board = "";

for (var y = 0; y < size; y++) {
  for (var x = 0; x < size; x++) {
    if ((x + y) % 2 == 0)
      board += " ";
    else
      board += "#";
  }
  board += "\n";
}

console.log(board);

按预期工作。

模数运算符返回余数。您将使用此方法创建一个棋盘图案。如果要撤消它,请使用=== 1。如果您希望每行都相同,只需使用x%2 === 0x%2 === 1

即可

答案 1 :(得分:0)

(4 + 4)%2

8/2 = 4

,剩余值为0

操作将在分割后给我们剩余价值

10%17 = 10

当我们对上述情况使用长除法时,

1)在10个答案中找到17个数是0

2)然后10 - (0 * 17)= 10

答案 2 :(得分:0)

%是模数运算。它将返回数字除以操作数后剩下的任何内容。因此(4+4)%28%2相同。并且当2完全进入8(没有提醒)时它返回0.

答案 3 :(得分:0)

我想也许你误解了modulo的工作原理。这个例子应该打印出每个迭代模数余数是什么。如果等式的左边没有余数,则得到0。

const size = 8;

let board = "";

for (let y = 0; y < size; y++) {
  for (let x = 0; x < size; x++) {
    console.log(x + ' plus ' + y + ' (' + (x+y) +') modulus 2 equals ' + (x + y) %2);
    board += ((x + y) % 2 === 0) ? " " : "#";
  }
  board += "\n";
}

console.log(board);

答案 4 :(得分:-2)

  

当存在除法'

时,将%(modulo)视为'余数'      

让我举几个例子......

     

10%2 = 0; // 2将进入10,五次离开剩余的0

     

12%2 = 0; // 2将进入12,6次并留下余数为0

     

5%2 = 1; // 2将进入5次,2次并留下1的剩余部分

     

6%3 = 0; // 3将进入6,2次并留下余数为0

     

3%5 = 3; // 5不能进3,所以余数是3.那是一样的   编号

     

(4 + 4)%2 = 0 // 8%2 = 0 ..... 2将进入8,四次并留下   余数为0