static CBigNum bnProofOfWorkLimit(~uint256(0) >> 32);
那句话充满了各种魔力。它到底在做什么?
假设 uint256 是一个 256 位无符号整数类型,并且运算符被定义为内置类型,这将:
>> 在 C++ 代码中是什么意思?
对于整数类型,它是二进制右移运算符,它采用其第一个操作数的二进制表示,并将其向右移动多个位置。a >> b
大致相同a / pow(2,b)
。
那句话充满了各种魔力。它到底在做什么?
uint256
不是标准类型或函数;我假设它是一个 256 位的大数类型,具有适当的运算符重载,因此它的行为类似于标准数字类型。uint256(0)
一个值为 0 的 256 位数字也是如此。
~
是二元否定运算符;它将所有设置位归零,并设置所有零位。所以~uint256(0)
将包含 256 位,全部设置。
最后,移位将这些位向右移动 32 位。所以前 32 位将全部为零,其余 224 位将被设置。
我的猜测是转变。它将位向右移动,可能是 32 位。由于 c++ 运算符重载,我们不能肯定地说没有看到 uint256 类。