C语言左移右移操作符算法反推
本帖最后由 smpowy 于 2013-12-05 12:00:23 编辑 我有一个 日期和时间的产生算法是这样的:
date = ((year - 1980)<<9) + (month <<5) + day;
其中:year >=1980
time = (hour <<11) + (minute <<5) + (second >>1);
现在我知道,date = 17273, time = 33976,请问,我如何反推出 year month day hour minute second.
这里我不是很明白,麻烦帮我详细的说一下。谢谢了。
为什么second 是右移呢?
[解决办法]
date = ((year - 1980)<<9) + (month <<5) + day;
其中:year >=1980
time = (hour <<11) + (minute <<5) + (second >>1);
year=date>>9+1980
month=date & mMask>>5;//mMask的看Moth占几位,占的位上写上1,就是mMask
day=date & mMaskA;//mMaskA同上
[解决办法]
http://bbs.csdn.net/topics/390660970
date = ((year - 1980)<<9) + (month <<5) + day;
其中:year >=1980
time = (hour <<11) + (minute <<5) + (second >>1);
现在我知道,date = 17273, time = 33976
17273(10) 33976(10)
100001101111001(2) 1000010010111000(2)
100001 1011 11001(2) 10000 100101 11000(2)
33- 11- 25 16: 37: 24
+1980 <<1
2013- 11- 25 16: 37: 48