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

发布于 2022-09-06 10:39:44 字数 184 浏览 13 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白云不回头 2022-09-13 10:39:44

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文