我查看了 DateTime Equals 实现:
public bool Equals(DateTime value)
{
return (this.InternalTicks == value.InternalTicks);
}
然后看看 internalticks
internal long InternalTicks
{
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
get
{
return (((long) this.dateData) & 0x3fffffffffffffffL);
}
}
然后我注意到了这个数字:0x3fffffffffffffffL
这是:4611686018427387903
但更有趣的是它的二进制表示:
00111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
^^
||
请注意箭头
如果只有左箭头是0
(正表示) ,我可以理解
但是为什么第二个也是
0
?另外,为什么我每个人都希望它
&
带有1111....
数字?如果我想显示5
我不必做5 & 1
,只需 5 个。
有什么帮助吗?