Зачем использовать гекс? - PullRequest
57 голосов
/ 28 октября 2008

Эй! Я искал этот код на http://www.gnu.org/software/m68hc11/examples/primes_8c-source.html

Я заметил, что в некоторых ситуациях они использовали шестнадцатеричные числа, как в строке 134:

for (j = 1; val && j <= 0x80; j <<= 1, q++)

Теперь, почему они используют 0x80? Я не очень хорош с гексом, но я нашел гекс онлайн с десятичной дробью, и он дал мне 128 за 0x80.

Также перед строкой 134, в строке 114 они имеют это:

small_n = (n & 0xffff0000) == 0;

От шестнадцатеричного числа к десятичному я получил за это шестнадцатеричное число 4294901760. Итак, здесь, в этой строке они делают немного И и сравнивают результат с 0 ??

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

Также я видел большие строки кода, где это просто шестнадцатеричные числа, и никогда не понимал почему: (

Ответы [ 12 ]

3 голосов
/ 28 октября 2008

Шестнадцатеричные или шестнадцатеричные числа представляют 4 бита данных, от 0 до 15 или в шестнадцатеричном от 0 до F. Два шестнадцатеричных значения представляют байт.

2 голосов
/ 28 октября 2008

Глядя на файл, это довольно грубый код. Надеюсь, вы хорошо разбираетесь в C и не используете его в качестве учебника ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...