Использование десятичной или шестнадцатеричной базы в .NET - PullRequest
1 голос
/ 14 марта 2011

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

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

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

int b = a >> 0x1f;

много вместо

int b = a >> 31;

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

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

Ответы [ 6 ]

4 голосов
/ 14 марта 2011

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

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

0x1f будет:

1 -> 0001

+

f -> 1111

= 00011111

1 голос
/ 14 марта 2011

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

0 голосов
/ 14 марта 2011

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

0 голосов
/ 14 марта 2011

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

0 голосов
/ 14 марта 2011

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

0 голосов
/ 14 марта 2011

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

...