鍍金池/ 問答/人工智能  Java/ java 數(shù)據(jù)結構 日期 y*512+m*32+d 請問是如何轉換的

java 數(shù)據(jù)結構 日期 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為有符號整數(shù),32位為符號位)。

這是一個按位存儲的算法。
參考512y+32m+d怎么理解

m乘32即左移5位,y乘512即左移9位

至于月份計算value右移5位,現(xiàn)在32bit中只有y和m的值了,再右移4位,只剩下y的值了,移出去的就是m的值,也就是取模的結果

2017年5月10日 15:27