value=512y+32m+d是假设所有的输入年份都为有效的。 一个int类型的存储长度为32位。取后1-5位存储d的值,因为 0<1<=d<=31。即2的5次方取中间6-9位存储m的值,因为 0<1<=m<=12<15。即2的4次方剩下的10至31位存储y的值(int为有符号整数,32位为符号位)。 这是一个按位存储的算法。参考512y+32m+d怎么理解 m乘32即左移5位,y乘512即左移9位 至于月份计算value右移5位,现在32bit中只有y和m的值了,再右移4位,只剩下y的值了,移出去的就是m的值,也就是取模的结果了
value=512y+32m+d
是假设所有的输入年份都为有效的。
一个int类型的存储长度为32位。
取后1-5位存储d的值,因为 0<1<=d<=31。即2的5次方
取中间6-9位存储m的值,因为 0<1<=m<=12<15。即2的4次方
剩下的10至31位存储y的值(int为有符号整数,32位为符号位)。
这是一个按位存储的算法。
参考512y+32m+d怎么理解
m乘32即左移5位,y乘512即左移9位
至于月份计算value右移5位,现在32bit中只有y和m的值了,再右移4位,只剩下y的值了,移出去的就是m的值,也就是取模的结果了