什么>>在C ++代码中意味着什么?

时间:2013-11-13 17:10:49

标签: c++ bit

static CBigNum bnProofOfWorkLimit(~uint256(0) >> 32);

这句话充斥着各种各样的魔法。到底是做什么的?

3 个答案:

答案 0 :(得分:4)

假设uint256是256位无符号整数类型,并且运算符定义为内置类型,则将:

  • 使用0
  • 初始化256位无符号整数
  • 按位反转(运算符〜)
  • 将其右移32位(运算符>>)

请参阅Wikipedia on C / C++ operators

答案 1 :(得分:4)

  

>>是什么在C ++代码中意味着什么?

对于整数类型,它是二元右移运算符,它采用其第一个操作数的二进制表示,并将其移动到右侧的多个位置。 a >> ba / pow(2,b)大致相同。

  

这句话充斥着各种各样的魔法。到底是做什么的?

uint256不是标准类型或功能;我假设它是256位的大数字类型,具有合适的运算符重载,因此它的行为类似于标准数字类型。所以uint256(0)是一个256位数,值为零。

~是二元否定运算符;它将所有设置位置零,并设置所有零位。所以~uint256(0)将包含256位,全部设置。

最后,移位将这些位向右移动32位。因此,前32位将全部为零,剩余的224位将被设置。

答案 2 :(得分:3)

我的猜测是一个转变。它将位向右移位,可能是32位。由于c ++运算符重载,我们无法确定没有看到uint256类。