相关疑难解决方法(0)

Sakamoto算法的正确性找到星期几

我使用Sakamoto的算法来查找给定日期的星期几.谁能告诉我这个算法的正确性?我想从2000年到2099年.

维基百科的算法仅供参考.

int dow(int y, int m, int d)
{
   static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
   y -= m < 3;
   return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
Run Code Online (Sandbox Code Playgroud)

c algorithm correctness dayofweek

59
推荐指数
1
解决办法
3万
查看次数

RTC 星期几字节

我通过端口 0x70 和 0x71 直接读取/写入 RTC。根据手册,工作日字节将保存星期几,Sunday=1,值范围从 1 到 7。当我读取今天得到的字节 4 时,即星期三。而当我阅读 RTC 信息时,hwclock -r日期是星期四,这是正确的。

将日期设置hwclock为其他日期并使用我的代码读取它不会反映工作日字节的变化。

此问题在所有系统中都存在。可能是什么问题?

x86 assembly real-time-clock

5
推荐指数
1
解决办法
1822
查看次数

三元语句中的C逗号

int m = 5, d = 12, y = 1975, val;
    // May 12, 1975
Run Code Online (Sandbox Code Playgroud)

有人可以在下面的代码行中解释逗号运算符的功能/目的:

val = (d+=m<3?y--:y-2,23*m/9+d+4+y/4-y/100+y/400)%7;
Run Code Online (Sandbox Code Playgroud)

上述行写由麦克·基思来计算给定日期(d =天,M =月,Y =年)一周中的一天.其中星期日= 0,星期一= 1,星期二= 2,星期三= 3,星期四= 4,星期五= 5,星期六= 6.我知道如果d + = m <3,则y--执行,否则y -2执行.我不明白的是y-2之后逗号的目的.

c ternary-operator comma operator-keyword

4
推荐指数
2
解决办法
1979
查看次数