Appearance
问题:对较大整数使用右移操作>>返回错误结果,并可能是负数:
>>
4143136207 >> 0 // -151831089
原因:使用算数右移>>操作时,在操作前会将number类型转化为有符号 32 位整数,高于 32 位的位被丢弃。执行右移后,如果右移后第一位(符号位)是 1,那么返回的是负数。
number
方案:在 32 位整数范围内改用逻辑右移动>>>。超过 32 位用 BigInt(兼容性较差) 或其它库。
>>>