Использование десятичной или шестнадцатеричной базы в.NET
Доброе утро, день или ночь,
Предупреждение: я знаю, что это может звучать так, будто я пытаюсь провести преждевременную оптимизацию, но я вас уверяю, что нет. Поэтому, пожалуйста, ответьте на этот вопрос, если вы хотите в меру своих возможностей, не указав мне ссылки на "преждевременную оптимизацию".
Можно ли заметить какие-либо различия в производительности массово повторяющихся операций с использованием констант, написанных в десятой и шестнадцатой? Я вижу людей пишущих
int b = a >> 0x1f;
много вместо
int b = a >> 31;
это говорит о том, что они либо происходят из C/C++, либо думают, что операции выполняются быстрее (а я говорю не только о побитовых операциях). Разве не все константы переведены в одну и ту же базу компилятором C#? Или могут быть какие-то преимущества в использовании базы 16 над базой 10 при написании кода?
Большое спасибо,
6 ответов
Это не будет иметь никакого значения, поскольку они будут скомпилированы в одно и то же.
Это делает код более читабельным для двоичных операций, так как использование шестнадцатеричного кода облегчает чтение битов. Преобразовать из десятичной системы в двоичную - намного сложнее сделать мысленно.
0x1f будет:
1 -> 0001
+
f -> 1111
= 00011111
Эти два утверждения идентичны компилятору. Это просто вопрос пользовательских предпочтений.
Единственное преимущество в том, что он более читабелен для тех, кто привык работать в гексах. Целое число - это целое число, представленное десятичным литералом или шестнадцатеричным.
Число - это число, десятичное или шестнадцатеричное - просто представление, чтобы записать число на экране так, чтобы человек мог его прочитать. Так что разницы нет вообще, ни в c/ C++.
Они действительно интерпретируются как одно и то же в IL, и первое из них труднее читать большинству людей. Так что нет особого преимущества в шестнадцатеричном методе.
Единственное преимущество, которое я вижу, состоит в том, что побитовые операции обычно имеют больший смысл в шестнадцатеричном формате. Операция сдвига, однако, не (на мой взгляд).