java 数据结构 日期 y*512+m*32+d 请问是如何转换的

y512+m32+d 请问是按位存储吗,如果是的话,那月份(value/32)%16又是如何转换的图片描述

回答:

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的值,也就是取模的结果了

以上是 java 数据结构 日期 y*512+m*32+d 请问是如何转换的 的全部内容, 来源链接: utcz.com/p/174206.html

回到顶部