Самый простой способ сделать это для целых чисел - это использовать шестнадцатеричное при условии, что нет ничего похожего на Int.maxInt (). Причина в следующем:
Макс. Значения без знака
8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Значения со знаком, используя 7F в качестве максимального значения со знаком
8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF
Значения со знаком, используя 80 в качестве максимального значения со знаком
8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000
Как это работает? Это очень похоже на двоичную тактику, и каждая шестнадцатеричная цифра составляет ровно 4 бита. Кроме того, многие компиляторы поддерживают hex намного лучше, чем двоичный.
F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000
Таким образом, 7F равно 01111111 / 7FFF равно 0111111111111111. Кроме того, если вы используете это для «безумно высокой константы», 7F ... является безопасным гексом, но достаточно просто попробовать 7F и 80 и просто распечатайте их на экране, чтобы увидеть, какой это.
0x7FFF + 0x0001 = 0x8000, так что ваша потеря - это только одно число, поэтому использование 0x7F ... обычно не является плохим компромиссом для более надежного кода, особенно после того, как вы начнете использовать 32-битные или более