Итак, один из моих коллег задал мне этот вопрос по PHP.
Каким будет вывод следующего кода?
<php
echo 0x33, ' birds sit on ', 022, ' trees.';
?>
Приведенный выше скрипт оценивает 51 birds sit on 18 trees.
Я знаю, 0x33
представляет шестнадцатеричное число и 022
представляет восьмеричное число
На этот вопрос можно ответить, запустив этот скрипт. Есть ли способ преобразовать шестнадцатеричные числа (основание 16) и восьмеричные числа (основание 8) в десятичные числа (основание 10) без использования таких функций, как hexdec () и octdec ()?
Поскольку этот вопрос был закрыт, я не смог опубликовать ответ на этот вопрос. Вы не можете просто отказаться отвечать, если интервьюер задает тот же вопрос в интервью или убедить интервьюера использовать какую-то функцию PHP для получения ответа.
Предположим, если вы хотите узнать 4 в степени 2, в PHP есть такие функции, как pow(4, 2)
, Но у разработчика должна быть идея оценить подобные базовые вопросы.
Подобные вопросы бесполезны и бесполезны в реальном мире, но их стоит обсудить, когда речь идет об интервью и экзаменах.
Достаточно сказано. Вот ответ: (спасибо Google)
Преобразование шестнадцатеричного числа в десятичное число:
+-----------------+------------------+
| Hexadecimal | Decimal |
+------------------------------------+
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
+-----------------+------------------+
Пример 1:
Шестнадцатеричное число 0x33, (игнорируйте 0x в начале)
Пример 2:
Шестнадцатеричное число 0xA, (игнорируйте 0x в начале)
Преобразование восьмеричного числа в десятичное число:
+-----------------+------------------+
| Octal | Decimal |
+------------------------------------+
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 10 | 8 |
| 11 | 9 |
| 12 | 10 |
| 13 | 11 |
| 14 | 12 |
| 15 | 13 |
| 16 | 14 |
| 17 | 15 |
| 20 | 16 |
+-----------------+------------------+
Пример 1:
Восьмеричное число 022
Пример 2:
Восьмеричное число 010
В нашем случае:
<php
echo 0x33, ' birds sit on ', 022, ' trees.'; // outputs, 51 birds sit on 18 trees.
?>
Надеюсь, что это поможет другим разработчикам PHP, которые ищут ответ на этот вопрос.
Для номера NяNя-1…N1N0 (то есть 1234 будет иметь п3= 1, n2= 2, п1= 3, н0= 4) в базе Икс Вы можете рассчитать его десятичное значение как:
сумма J = 0 для меня NJ ⋅ ИксJ
Таким образом, если 1234 будет в базе 16, у нас будет 4 ⋅ 160 + 3 ⋅ 161 + 2 ⋅ 162 + 1 ⋅ 163 = 4660
Это действительно не что иное, как работа системы счисления. Также обратите внимание, что базовое преобразование от 10 до 10 равно тождественной функции.
Увидеть http://en.wikipedia.org/wiki/Positional_notation#Base_conversion.
Других решений пока нет …