Количество цифр в некоторой базе B, необходимое для представления числа n, определяется как
& lceil; log B (n + 1) & rceil;
Это означает, что шестнадцатеричные числа более эффективны, чем десятичные числа всякий раз, когда
& lceil; log 16 (n + 1) & rceil; <& lceil; log <sub>10 (n + 1) & rceil;
Если у вас есть какое-то число n для проверки, вы можете просто вставить его в эту формулу, чтобы увидеть, будет ли шестнадцатеричное или десятичное число более эффективным.
Но давайте посмотрим, сможем ли мы построить диапазоны, в которых вам нужно некоторое количество цифр для представления чего-либо. Мы получаем эту таблицу здесь:
Num Digits Decimal Cutoff Hex Cutoff
----------------------------------------------------
1 0 0
2 10 16
3 100 256
4 1000 4096
5 10000 65536
6 100000 1048576
7 1000000 16777216
Обратите внимание, что когда мы набираем шесть десятичных цифр, записывать число в десятичном виде никогда не бывает более эффективно, поскольку десятичное число с шестью цифрами составляет самое большее 999999, а шестнадцатеричное число с шестью цифрами - самое большее 16777215. Таким образом, начиная с 100000 и далее лучше записать число в шестнадцатеричном формате, чем в десятичном.
РЕДАКТИРОВАТЬ : Поскольку вы учитываете символы 0x как часть общего количества требуемых цифр, вы будете искать первое число, где
& lceil; log 16 (n + 1) & rceil; + 2 <& lceil; log <sub>10 (n + 1) & rceil;
В этом случае таблица выглядит так:
Num Digits Decimal Cutoff Hex Cutoff
----------------------------------------------------
0 100 1
1 1000 16
2 10000 256
3 100000 4096
4 1000000 65536
5 10000000 1048576
6 100000000 16777216
7 1000000000 268435456
8 10000000000 4294967296
9 100000000000 68719476736
10 1000000000000 1099511627776
11 10000000000000 17592186044416
В этом случае точка, в которой встречаются два представления, - 1099511627776, для которой требуется только 11 шестнадцатеричных цифр, но 13 десятичных цифр. Начиная с этого момента, вы всегда как минимум хорошо используете шестнадцатеричное. Как только вы нажмете 10000000000000, вам будет лучше использовать гекс.
Надеюсь, это поможет!