Использование десятичной или шестнадцатеричной базы в.NET

Доброе утро, день или ночь,

Предупреждение: я знаю, что это может звучать так, будто я пытаюсь провести преждевременную оптимизацию, но я вас уверяю, что нет. Поэтому, пожалуйста, ответьте на этот вопрос, если вы хотите в меру своих возможностей, не указав мне ссылки на "преждевременную оптимизацию".

Можно ли заметить какие-либо различия в производительности массово повторяющихся операций с использованием констант, написанных в десятой и шестнадцатой? Я вижу людей пишущих

int b = a >> 0x1f;

много вместо

int b = a >> 31;

это говорит о том, что они либо происходят из C/C++, либо думают, что операции выполняются быстрее (а я говорю не только о побитовых операциях). Разве не все константы переведены в одну и ту же базу компилятором C#? Или могут быть какие-то преимущества в использовании базы 16 над базой 10 при написании кода?

Большое спасибо,

6 ответов

Это не будет иметь никакого значения, поскольку они будут скомпилированы в одно и то же.

Это делает код более читабельным для двоичных операций, так как использование шестнадцатеричного кода облегчает чтение битов. Преобразовать из десятичной системы в двоичную - намного сложнее сделать мысленно.

0x1f будет:

1 -> 0001

+

f -> 1111

= 00011111

Эти два утверждения идентичны компилятору. Это просто вопрос пользовательских предпочтений.

Единственное преимущество в том, что он более читабелен для тех, кто привык работать в гексах. Целое число - это целое число, представленное десятичным литералом или шестнадцатеричным.

Число - это число, десятичное или шестнадцатеричное - просто представление, чтобы записать число на экране так, чтобы человек мог его прочитать. Так что разницы нет вообще, ни в c/ C++.

Они действительно интерпретируются как одно и то же в IL, и первое из них труднее читать большинству людей. Так что нет особого преимущества в шестнадцатеричном методе.

Единственное преимущество, которое я вижу, состоит в том, что побитовые операции обычно имеют больший смысл в шестнадцатеричном формате. Операция сдвига, однако, не (на мой взгляд).

Другие вопросы по тегам