Effacer les filtres
Effacer les filtres

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

1 vue (au cours des 30 derniers jours)
J
J le 15 Juin 2013
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));

Réponse acceptée

Wayne King
Wayne King le 15 Juin 2013
Modifié(e) : Wayne King le 15 Juin 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
  4 commentaires
per isakson
per isakson le 15 Juin 2013
Yes,
not( [ xor(1,0), xor(0,1), xor(1,1), xor(0,0) ] )
returns
ans =
0 0 1 1
J
J le 16 Juin 2013
Many thanks. Couldn't wrap my head around the latter part of it.

Connectez-vous pour commenter.

Plus de réponses (2)

Roger Stafford
Roger Stafford le 16 Juin 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
Andrei Bobrov le 16 Juin 2013
~rem(year,4)&rem(year,100)|~rem(year,400)

Catégories

En savoir plus sur Dates and Time dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by