java 数据结构 日期 y*512+m*32+d 请问是如何转换的
y512+m32+d 请问是按位存储吗,如果是的话,那月份(value/32)%16又是如何转换的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
y512+m32+d 请问是按位存储吗,如果是的话,那月份(value/32)%16又是如何转换的
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
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的值,也就是取模的结果了