Вычисления с не десятичными числами при помощи языка программирования-PHP
Решение
Предваряйте число начальным символом, чтобы PHP смог узнать, что это не десятичное число. Следующие значения равны:
0144 // основание 8
100 // основание 10
0x64 // основание 16
Ниже показан отсчет от 1 до 15 в шестнадцатеричной нотации:
for ($i = 0x1; $i < 0x10; $i++) { print "$i\n"; }
Обсуждение
Даже если в цикле for используются числа в шестнадцатеричном формате, по умолчанию все числа печатаются в десятичном формате. Другими словами, код из предыдущего раздела «Решение» не печатает «..., 8, 9, a, b, ...». Напечатать число в шестнадцатеричном формате можно при помощи одного из методов, перечисленных в рецепте(Преобразование из одной системы счисления в другую)
Например:
for ($i = 0x1; $i < 0x10; $i++) { print dechex($i) . "\n"; }
Большинство вычислений проще выполнять в десятичной системе. Однако иногда логичнее переключиться на систему с другим основанием, например при использовании 216 веб-корректных цветов. Каждый код веб-цвета представляется в виде RRGGBB, где RR – это красный цвет, GG – зеленый цвет, а BB – голубой. Каждый цвет на самом деле представляет собой двузначное шестнадцатеричное число от 0 до FF.
Особыми веб-цвета делает то, что каждый из кодов RR, GG и BB должен быть одним из шести чисел: 00, 33, 66, 99, CC и FF (в десятичном формате: 0, 51, 102, 153, 204, 255). Поэтому 003366 – это веб-корректный цвет, а 112233 – нет. Веб-корректные цвета отображаются на 256-цветном мониторе без сглаживания переходов.
В приведенном ниже тройном цикле числа создаваемого списка записываются в шестнадцатеричной системе, чтобы подчеркнуть шестнадцатеричную природу списка:
for ($rr = 0; $rr <= 0xFF; $rr += 0x33)
for ($gg = 0; $gg <= 0xFF; $gg += 0x33)
for ($bb = 0; $bb <= 0xFF; $bb += 0x33)
printf("%02X%02X%02X\n", $rr, $gg, $bb);
В данном цикле вычисляются все веб-корректные цвета. Пошаговое приращение записывается в шестнадцатеричной системе, поскольку это усиливает шестнадцатеричную связь между числами. Печатайте их с помощью функции printf(), чтобы отформатировать их в виде шестнадцатеричных чисел в верхнем регистре длиной как минимум в две цифры. Число с одной цифрой отображается с нулем в начале.
Комментарии:
Комментариев нет
|
|
|