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

3 ビュー (過去 30 日間)
J
J 2013 年 6 月 15 日
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));

採用された回答

Wayne King
Wayne King 2013 年 6 月 15 日
編集済み: Wayne King 2013 年 6 月 15 日
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 件のコメント
per isakson
per isakson 2013 年 6 月 15 日
Yes,
not( [ xor(1,0), xor(0,1), xor(1,1), xor(0,0) ] )
returns
ans =
0 0 1 1
J
J 2013 年 6 月 16 日
Many thanks. Couldn't wrap my head around the latter part of it.

サインインしてコメントする。

その他の回答 (2 件)

Roger Stafford
Roger Stafford 2013 年 6 月 16 日
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 2013 年 6 月 16 日
~rem(year,4)&rem(year,100)|~rem(year,400)

カテゴリ

Help Center および File ExchangeCalendar についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by