Помощник
|
Шестнадцатиричные |
ZevsPHP
|
Сообщение
#1
|
||
|
|
||
|
|||
Degradator |
29.10.2015, 18:10;
Ответить: Degradator
Сообщение
#2
|
|
Не стоит беспокоиться о этой теме, и даже посмею заявить, что восьмеричная и шестнадцатеричная системы исчисления вам не понадобяться. В php это выглядит также как и в большинстве других не эзотерических языках программирования, поэтому можно запомнить, что число которое начинается с 0 это восьмеричное число, а которое начинается с 0x это шестнадцатеричное.
|
|
|
Arks |
29.10.2015, 23:08;
Ответить: Arks
Сообщение
#3
|
|
16-ричные:
[PHP] php > echo hexdec(0x666); 5688 php > echo dechex(5688); 1638 php > echo hexdec(1638); 5688 php > echo 1638 === 0x666; 1 php > echo 1638 === '0x666'; php > echo 1638 == '0x666'; 1 [/PHP] 8-ричные: [PHP] echo octdec(115); 77 php > echo decoct(77); 115 [/PHP] Думаю идея вцелом понятна. тоже самое с bindec/decbin и числами 0b.... (бинарными) нюансы преобразования типов: [PHP] php > echo 77 === 1*'0115'; php > echo 1638 === 1*'0x666'; 1 [/PHP] в случае с восьмиричным числом строка 0115 "смогла" привестись к числу 115 и 77 !== 115, а в случае с шестнадцатеричным строка 0x666 не смогла привестись к int поэтому была интерпретирована как 16-ричное число 0x666 которое равно 1638 в десятеричной. В php7(релиз ноябрь-декабрь 2015) эта неоднозначность уже убрана. Ну и конечно не забываем про http://php.net/manual/ru/function.base-convert.php |
|
|
ZhukV |
16.11.2015, 20:40;
Ответить: ZhukV
Сообщение
#4
|
|
|
А смысл их использовать в PHP? Эти типы счисления больше используются в контроллерах и процессорах.
Чтобы было более понятно: Очень очень давно, инженеры понимали, что нужно как то передавать информацию. Но как? Вот и пришли к выводу: а давайте будет передавать 0 и 1, и это и будет передача данных. Ну, все согласились, и начали передавать вот такое (Бит): 010001010101111100001111100000101010101111001000011111...... и так до бесконечности Далее, была уже другая проблема, что этот "код" и "данные" очень сложно считать человеческим мозгом (но не для компьютера, он другого просто не поймет :)), и решили как-то это дело "оптимизировать". Вот и решили использовать то, что что было придумано уже очень очень давно до нашего времени - Позиционные Системы Счисления. И чтобы было еще более понятно: Мы же люди, когда пишем какой-то код, или записываем какие-то данные, всегда приходим в самому обычному, к символам. К примеру, мы же пишем просто слово hello а не какие-то 0 и 1. Но поверьте, что компютер, это примет именно как 11010001100101110110011011001101111. Откуда это взялось, наверное много к спросит. А вот почему: Каждому символу присутствует какой-то код, будь то ASCII или же Юникод (UTF-*). В примере с hello все очень просто, так как используются только ASCII, и того, вот коды символов (в десятиричной системе): 104, 101, 108, 108, 111. Если мы эти символы переведем в двоичную, то получим уже ранее известный нам результат: 11010001100101110110011011001101111 Но, при этом мы ведь можем перевести и в другие системы!!! Система счисления, это всего лишь абстрактное понятия, и каждый выбирает себе ту, которая ему по душе. Для человека это будет десятичная, для машины - двоичная, а для гуру, может и шестнадцатиричная будет по душе :) Ну, и ближе к сути: Шестнадцатиричные Честно Вам скажу: не парьтесь. В PHP Вы наверное за всю свою жизнь их не будете использовать. А вот если залезете немножко в микроконтроллеры, то там без этого никак :)
|
|
|
||
|
Текстовая версия | Сейчас: 29.3.2024, 17:45 |