Что такое 0x10 в десятичном формате? - PullRequest
8 голосов
/ 28 марта 2009

У меня есть следующий код:

SN.get_Chars(5)

SN - строка, поэтому она должна давать 5-й символ. Хорошо!

Теперь у меня есть другой код, но: SN.get_Chars(0x10)

Интересно, что такое 0x10? Это число? Если это так, то что это в десятичной записи?

Ответы [ 5 ]

86 голосов
/ 28 марта 2009

0xNNNN (необязательно четыре цифры) представляет, по крайней мере, в C, шестнадцатеричное (base-16, потому что «hex» равно 6, а «dec» равно 10 в латинских языках), где N означает одна из цифр от 0 до 9 или A до F (или их строчные эквиваленты, представляющие от 10 до 15), и в числе может быть 1 или более из этих цифр. Другой способ представить это NNNN 16 .

Это очень полезно в компьютерном мире, так как одна шестнадцатеричная цифра представляет четыре бита (двоичные цифры). Это связано с тем, что четыре бита, каждый с двумя возможными значениями, дают в общей сложности 2 x 2 x 2 x 2 или 16 (2 4 ) значений. Другими словами:

  _____________________________________bits____________________________________
 /                                                                             \
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| bF | bE | bD | bC | bB | bA | b9 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
 \_________________/ \_________________/ \_________________/ \_________________/ 
      Hex digit           Hex digit           Hex digit           Hex digit

Число base-X - это число, где каждая позиция представляет собой кратное степени X.


В базе 10, к которой мы, люди, привыкли, используются цифры от 0 до 9, а число 7304 10 равно:

  • (7 x 10 3 ) = 7000 10 ; плюс
  • (3 х 10 2 ) = 300 10 ; плюс
  • (0 x 10 1 ) = 0 10 ; плюс
  • (4 x 10 0 ) = 4 10 ; равно 7304.

В восьмеричном, где цифры от 0 до 7. номер 754 8 равен:

  • (7 x 8 2 ) = 448 10 ; плюс
  • (5 х 8 1 ) = 40 10 ; плюс
  • (4 x 8 0 ) = 4 10 ; равняется 492 10 .

Восьмеричным числам в C предшествует символ 0, поэтому 0123 - это не 123, а вместо этого (1 * 64) + (2 * 8) + 3 или 83.


В двоичном коде, где цифры 0 и 1. номер 1011 2 равен:

  • (1 х 2 3 ) = 8 10 ; плюс
  • (0 x 2 2 ) = 0 10 ; плюс
  • (1 х 2 1 ) = 2 10 ; плюс
  • (1 х 2 0 ) = 1 10 ; равно 11 10 .

В шестнадцатеричном формате, где цифры от 0 до 9 и A до F (которые представляют собой "цифры" 10 до 15). номер 7F24 16 равен:

  • (7 х 16 3 ) = 28672 10 ; плюс
  • (F x 16 2 ) = 3840 10 ; плюс
  • (2 х 16 1 ) = 32 10 ; плюс
  • (4 х 16 0 ) = 4 10 ; равно 32548 10 .

Ваше относительно простое число 0x10, которое C обозначает 10 16 , просто:

  • (1 х 16 1 ) = 16 10 ; плюс
  • (0 х 16 0 ) = 0 10 ; равно 16 10 .

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

  • основание 10, как уже упоминалось ранее, используется нами, людьми с 10 цифрами на руках.
  • база 2 используется компьютерами из-за относительной простоты представления двух двоичных состояний с помощью электрических цепей.
  • base 8 используется почти исключительно в разрешениях файла UNIX, так что каждая восьмеричная цифра представляет собой три набора двоичных разрешений (чтение / запись / выполнение). Он также используется в языках на основе C и в утилитах UNIX для ввода двоичных символов в поток данных, который можно печатать только для символов.
  • основание 16 - это удобный способ представления четырех битов в цифре, тем более что в настоящее время большинство архитектур имеют размер слова, кратный четырем битам.
  • base 64 используется для кодирования почты, поэтому двоичные файлы могут быть отправлены только с использованием печатаемых символов. Каждая цифра представляет шесть двоичных цифр, поэтому вы можете упаковать три восьмибитных символа в четыре шестибитные цифры (размер файла увеличился на 25%, но гарантированно не будет затронут почтовые шлюзы).
  • как полу-полезный фрагмент, база 60 происходит от очень древней цивилизации (Вавилон, Шумер, Месопотамия или что-то в этом роде) и является источником 60 секунд / минут в минуту / час, 360 градусов по кругу, 60 минут (по дуге) и т. Д. [На самом деле не связаны с компьютерной индустрией, но тем не менее интересны].
  • как еще менее полезный фрагмент, последний вопрос и ответ в Справочнике автостопом по галактике было «Что вы получите, когда умножите 6 на 9?» и "42". Хотя то же самое говорят, что это потому, что компьютер Земли был неисправен, другие видят в этом доказательство того, что у создателя 13 пальцев: -)
43 голосов
/ 28 марта 2009

0x означает, что число является шестнадцатеричным или основанием 16.

0x10 - 16.

3 голосов
/ 21 апреля 2009

Обратите внимание, что «10» является представлением базы в этой базе:

10 - это 2 (десятичные) в базе-2

10 - это 3 (десятичные) в базе-3

...

10 - 10 (десятичное) в базовом-10

...

10 - 16 (десятичное число) в основании 16 (шестнадцатеричное)

...

10 - 1024 (десятичное число) в базе-1024

... и т. Д.

3 голосов
/ 28 марта 2009

Это шестнадцатеричное число с десятичным числом 16.

1 голос
/ 20 мая 2017

Простая версия: 0x - это префикс, обозначающий шестнадцатеричное число, source .

Таким образом, значение, которое вы вычисляете, равно после префикса, в данном случае 10.

Но это не число 10. Самый старший бит 1 обозначает шестнадцатеричное значение, тогда как 0 обозначает единицы.

Итак, простая математика, которую вы бы сделали, это

0x10

1 * 16 + 0 = 16

Примечание - вы используете 16, потому что гекс - это основание 16.

Другой пример:

0xF7

15 * 16 + 7 = 247

Вы можете получить список значений, выполнив поиск в шестнадцатеричной таблице. Например, в этом графике уведомление F соответствует 15.

...