所以我在DartPad上运行 dart我尝试运行以下代码:
import 'dart:math';
void main() {
print(~0);
print(~-1);
print(~~-1);
}
这导致了以下输出
4294967295
0
4294967295
正如您所看到的,从 0 反转位会产生最大数(我期待 -1,因为 dart 使用二进制补码)并从 -1 反转会导致 0,这会导致反转 2 次 -1 不会给我 - 1.
看起来它在反转 0 时忽略了第一位,这是为什么呢?