任何人都可以解释这部分代码的作用:_num = (_num & ~(1L << 63));
我一直在阅读 RNGCryptoServiceProvider 并遇到了http://codethinktank.blogspot.co.uk/2013/04/cryptographically-secure-pseudo-random.html的代码,除了上一节。
我理解它确保所有数字都是正数,但我不知道它是如何做到的。
完整代码
public static long GetInt64(bool allowNegativeValue = false)
{
using (RNGCryptoServiceProvider _rng = new RNGCryptoServiceProvider())
{
byte[] _obj = new byte[8];
_rng.GetBytes(_obj);
long _num = BitConverter.ToInt64(_obj, 0);
if (!allowNegativeValue)
{
_num = (_num & ~(1L << 63));
}
return _num;
}
}
任何解释它的帮助将不胜感激