X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Шестнадцатиричные
ZevsPHP
ZevsPHP
Topic Starter сообщение 28.10.2015, 23:30; Ответить: ZevsPHP
Сообщение #1


Уважаемые товарищи гуру программисты php. Помогите начинающему вундеркинду в освоении начальных азов изучения php.
В учебном пособии котором я приобрёл, в самом начале придается значение таким методам систем исчисления как восьмиричные и шестнадцатиричные, мол без этого никуда.
Может есть где мануал по данной теме, что бы посмотреть более подробно как выглядит это в php, если я корректно объяснил. А то в голове путаница образовалась с етими восьмиричными системами.
Заранее благодарен, спасибо.:rolleyes:
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 29.10.2015, 18:10; Ответить: Degradator
Сообщение #2


Не стоит беспокоиться о этой теме, и даже посмею заявить, что восьмеричная и шестнадцатеричная системы исчисления вам не понадобяться. В php это выглядит также как и в большинстве других не эзотерических языках программирования, поэтому можно запомнить, что число которое начинается с 0 это восьмеричное число, а которое начинается с 0x это шестнадцатеричное.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
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
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 Вы наверное за всю свою жизнь их не будете использовать. А вот если залезете немножко в микроконтроллеры, то там без этого никак :)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 29.3.2024, 17:45
Дизайн