C: 0x11 в десятичном виде - PullRequest
0 голосов
/ 20 июня 2011

Извините за этот основной вопрос, но почему 0x11 это 17 в десятичном формате (print(%d, 0x11)=17?

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

Ответы [ 7 ]

11 голосов
/ 20 июня 2011

Так же, как «11» в базовом десятке означает «1 десять» и «1 один», «11» в базовом 16 (т.е. шестнадцатеричное) означает «1 шестнадцать» и «1 один» - или 17 в базовом 10.

4 голосов
/ 20 июня 2011

0x11 = 1 * 16 ^ 1 + 1 * 16 ^ 0 = 17. (Как и 17 = 1 * 10 ^ 1 + 7 * 10 ^ 0.)

4 голосов
/ 20 июня 2011

0x в начале числа означает, что компилятор будет читать его как шестнадцатеричное.0x11 = 1 * 16 + 1 = 17

2 голосов
/ 20 июня 2011
0x11 =   1 * 16^1 (16)
       + 1 * 16^0 ( 1)
     -----------------
      0x11        (17)

Так же, как:

  17 =   1 * 10^1 (10)
       + 7 * 10^0 ( 7)
     -----------------
        17        (17)
1 голос
/ 20 июня 2011

Шестнадцатеричный счет с 16 цифрами вместо 10. Для учета дополнительных 6 цифр используются буквы от A до F.

Подсчет от 0 в базе 16 и базе 10:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9,  A,  B,  C,  D,  E,  F, 10, 11 (base 16)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 (base 10)

Кроме того, для преобразования из базы 16 в базу 10:

11 16 = 1 * 16 + 1 = 17 10

0 голосов
/ 20 июня 2011

вот простой способ увидеть

128 64 32 16 8 4 2 1 = Десятичные значения ...0 0 0 1 0 0 0 1 = логические переключатели, которые включены или выключены

сложите их вместе 16 + 1 = 17

0 голосов
/ 20 июня 2011

Ну, может, потому что 0x11 IS 17 в десятичном виде?

...