此语句检查数字是否为32位。
0 < res <= (1 << 31) -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位)