0&lt; res&lt; =(1 <&lt; 31)-1 - 这是什么意思?

时间:2017-11-26 18:03:25

标签: bit-manipulation

此语句检查数字是否为32位。

0 < res <= (1 << 31) -1

我似乎无法理解,有人可以帮助理解这种位移语法吗?

1 个答案:

答案 0 :(得分:1)

好吧,让我们从一个例子开始:

二进制中的

1是1

二进制中的

2是10

二进制4是100

我们可以看到,我们需要在每个数字的末尾“添加”0乘以2,在大多数语言中,我们可以使用以下语法执行此操作:number << 1 这里我们说我们在左边添加1次0。 number >> 1这里我们在右边添加1次0。

所以1 << 31表示1 * 2 * 2 * 2 ... 31次,这意味着2 ^ 31(所以32位)