За последние 24 часа нас посетили 65963 программиста и 1617 роботов. Сейчас ищут 1087 программистов ...

Превозмогания тред

Тема в разделе "PHP для новичков", создана пользователем ubunta2, 27 июн 2017.

  1. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    нахера тебе двоичный код?
     
  2. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    это в книге по пхп написано
    --- Добавлено ---
    мне чтоб программировать на пхп
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    двоичный код не нужен для этого.
     
  4. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    а что нужно?
     
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    так сразу и не ответишь...
    Нужно понимать как взаимодействует браузер с сервером,
    нужно понимать, как писать алгоритмы (это и есть программирование),
    нужно знать синтаксис языка.
    И самое главное - это опыт.
    С чего ты решил этому научиться (где-то что-то попробовал и понравилось и выбрал сферу веб, как вариант..)?
    ты пробовал программировать вообще в принципе на чем угодно?
     
  6. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    Я бы не был так категоричен.
    Смотря что писать, в определенном классе задач, без битовых операций не обойтись.
     
  7. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    посмотрел хорошо платят программистам
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Можно пример (задачи)? любопытно...
    Хорошо платят хорошим программистам.
    А еще хорошо платят хорошим фотошоперам, тридэмаксерам и еще много кому.
    Эту работу нужно любить. Когда берешь проект, то живёшь им.
    Думаешь о нём не только за компом, но и в душе, в туалете и на прогулке.
    Нацелившись на бабло хорошим программистом не стать, как и любым другим хорошим спецом.
    Просто тебя на долго не хватит.
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @ubunta2 надо помнить, чтобы потом использовать, например is_array удобно использовать перед тем как хочешь делать что-то с массивом, так как без такой проверки там может быть не массив и это вызывает ошибку при роботе с чем-то как с массивом что не умеет работать как массив
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Тут есть примеры https://secure.php.net/manual/ru/language.operators.bitwise.php
    если конкретно какая-то побитовая операция не понятна, но можно поискать в интернете объяснение

    тут в итоге выполнена побитовая операция "Или", по ссылки что я дал, там есть для каждой название, в самом начале страницы есть таблица
     
  11. umbabaraumba

    umbabaraumba Новичок

    С нами с:
    18 июн 2017
    Сообщения:
    100
    Симпатии:
    17
    Зачем это заучивать? Надо просто знать что есть такие функции, и при необходимости смотреть в документации про них.
     
  12. umbabaraumba

    umbabaraumba Новичок

    С нами с:
    18 июн 2017
    Сообщения:
    100
    Симпатии:
    17
    Банкирам и дипутатам еще лучше платят :)
     
  13. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    нужно иметь технический склад ума. Операции над битами - 100% техническая вещь. Эту тему нужно понять, чтобы правильно относиться к информации в программировании.
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ну конкретно те функции на изображении проще заучить, чем бегать и вспоминать
     
    [vs] нравится это.
  15. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я не пойму как получилось это число
     
  16. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    Ненадо ничего заучивать, просто надо много практики и всё запомнится.
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @ubunta2 сначала надо научиться двоичной арифметике
    --- Добавлено ---
    a1 = 2 = 10
    a2 = 8 = 1000
    a3 = 45 << 5 = 10110100000
    a4 = 15 << 14 = 1111000000000000000
    a5 = 15 << 23 = 111100000000000000000000000

    a1 | a2 | a3 | a4 | a5 = 111100001111000010110101010​
    --- Добавлено ---
    111100000111100010110101010 переведи сам из двоичной системы в десятичную.
     
    denis01 нравится это.
  18. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    зачем эти биты в пхп?
     
  19. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Наверное как минимум чтобы понимать, как работает функция pack(), и почему floor((0.1+0.7)*10) вернет 7, а не 8.
    --- Добавлено ---
    Представление о системах счисления нужно для понимания base_convert и кодирования base64.
     
  20. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    не так уж и часто нужно понимание двоичного счисления в пхп... я за все время один раз столкнулся.. да и то потому что в чужом коде разбирался а там автор извращенец условие сделал и в нем сдвиг использовался...
     
  21. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    а еще сны снятся)) как что то ты где то там реализовываешь)) потом просыпаешься - а такое ощущение что всю ночь что то кодил)
     
  22. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    Разбор бинарных пакетов от электронного оборудования, без битовых операций и шагу сделать нельзя.
    Там и CRC полиномы нужно вычислять, реализацию которых не всегда можно найти на нужном языке программирования.
    Разбор телеметрии - битовые операции. Прочитать дату по стандарту родственному WmBus - битовые операции.

    Да, такие вещи пишутся и на PHP. Доля конечно подобных проектов мала по сравнению с "сайтоклепанием", но тем не менее.
     
  23. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    они часто используются чтобы передать нужные опции (с помощью битовой маски) в аргументы функции

    Есть функция https://secure.php.net/manual/ru/function.error-reporting.php
    она принимает аргумент $level единственным аргументом

    PHP:
    1. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    Вот побитовая операция
    PHP:
    1. E_ERROR | E_WARNING | E_PARSE | E_NOTICE
    Все константы https://secure.php.net/manual/ru/errorfunc.constants.php

    Побитовое "или" https://ru.wikipedia.org/wiki/Битовые_операции#.D0.9F.D0.BE.D0.B1.D0.B8.D1.82.D0.BE.D0.B2.D0.BE.D0.B5_.C2.AB.D0.98.D0.9B.D0.98.C2.BB_.28OR.29
    --- Добавлено ---
    PHP:
    1. <?php
    2. function __dec2bin($num) { echo sprintf( "%015d", decbin( $num )).PHP_EOL; }
    3.  
    4. // https://secure.php.net/manual/ru/errorfunc.constants.php
    5. echo __dec2bin(1);      // E_ERROR              000000000000001
    6. echo __dec2bin(2);      // E_WARNING            000000000000010
    7. echo __dec2bin(4);      // E_PARSE              000000000000100
    8. echo __dec2bin(8);      // E_NOTICE             000000000001000
    9. echo __dec2bin(16);     // E_CORE_ERROR         000000000010000
    10. echo __dec2bin(32);     // E_CORE_WARNING       000000000100000
    11. echo __dec2bin(64);     // E_COMPILE_ERROR      000000001000000
    12. echo __dec2bin(128);    // E_COMPILE_WARNING    000000010000000
    13. echo __dec2bin(256);    // E_USER_ERROR         000000100000000
    14. echo __dec2bin(512);    // E_USER_WARNING       000001000000000
    15. echo __dec2bin(1024);   // E_USER_NOTICE        000010000000000
    16. echo __dec2bin(2048);   // E_STRICT             000100000000000
    17. echo __dec2bin(4096);   // E_RECOVERABLE_ERROR  001000000000000
    18. echo __dec2bin(8192);   // E_DEPRECATED         010000000000000
    19. echo __dec2bin(16384);  // E_USER_DEPRECATED    100000000000000
    20. echo __dec2bin(32767);  // E_ALL                111111111111111
    --- Добавлено ---
    Видишь у нас 16 опций есть, значит нам хватит число длиной в 15 символов в двоичной системе,
    число 000000000000000 отвечает за отключение всех опций,
    а 111111111111111 за включение всех,
    грубо говоря для включения E_ERROR смотрит на последний символ из 15 и если он 1 то опция включена, а если 0 то выключена

    например ты хочешь включить только E_ERROR и E_USER_DEPRECATED, а остальные выключить,
    делаем побитовой операцией "или": 000000000000001 | 100000000000000 = 100000000000001
    там где был 0 и 1 стал 1, где 1 и 0 стал 0, где 0 и 0 стал 0
     
  24. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я все равно не пойму как получилось число
     
  25. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    как понять это ? как понять результат?