## What does this line of code mean in non-code speak?

on 15 Jun 2013

### Wayne King (view profile)

```if (div4 & ~( xor(div100, div400)))
```

div4 div100 and div400 are given by:

```div4 = ((year/4) == floor (year/4));
div100 = ((year/100) == floor (year/100));
div400 = ((year/400) == floor (year/400));
```

## Products

No products are associated with this question.

### Wayne King (view profile)

on 15 Jun 2013
Edited by Wayne King

### Wayne King (view profile)

on 15 Jun 2013

div4, div100, and div400 are all logical variables, 1 or 0.

` if (div4 & ~(xor(div100,div400)))`

says "if div4 is true (1) and div100 and div400 are both false or both are true, do something"

```~xor(div100,div400)
```

equals 1 (true) only if both div100 and div400 are false or both are true

Wayne King

### Wayne King (view profile)

on 15 Jun 2013

right, ~xor(A,B) is true only if both are false or both are true (I forgot the both are true condition)

```~xor(1,0)
~xor(0,1)
~xor(1,1)
~xor(0,0)
```
per isakson

### per isakson (view profile)

on 15 Jun 2013

Yes,

`    not( [ xor(1,0), xor(0,1), xor(1,1), xor(0,0) ] )`

returns

```    ans =
0     0     1     1```
J

### J (view profile)

on 16 Jun 2013

Many thanks. Couldn't wrap my head around the latter part of it.

### Roger Stafford (view profile)

on 16 Jun 2013

In other words, this logical statement is true when 'year' is to be a leap year under the Gregorian calendar. They could just as well have written

` if div4&(div100==div400)`

or, given the definitions of these quantities,

` if div4&(div100<=div400)`

or, again given their definitions, even this

` if div400|(div4~=div100)`

### Andrei Bobrov (view profile)

on 16 Jun 2013
```~rem(year,4)&rem(year,100)|~rem(year,400)
```

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi