За последние 24 часа нас посетили 67913 программистов и 1650 роботов. Сейчас ищут 885 программистов ...

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

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

  1. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @ubunta2 тебе кто то должен помогать?
    --- Добавлено ---
    Столько реальной фигни как ты еще никто не писал
     
  2. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    мне никто не должен, я понимаю
    только зачем постоянно подкалывать
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Честно? Я пытался. Много раз. Но ты, вместо того, чтобы понимать, только спрашивал "а как?".
    Хотя, сейчас, есть прогресс, да. Это хорошо.
     
  4. umbabaraumba

    umbabaraumba Новичок

    С нами с:
    18 июн 2017
    Сообщения:
    100
    Симпатии:
    17
    Да он уже не один раз помог.
     
  5. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    111100000111100010110101010=
    126076330
    000000000000000000000011100=28
    (126076330 & 28)
    01001
    >> 2)
    001001=4

    --- Добавлено ---
    111100000111100010110101010=
    126076330
    000000000000011111111100000=

    16352
    01110110101
    (126076330 & 16352)
    >> 5
    не пойму нужно сместить единицы
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Сместить разряды, не единицы. Разряд - это 0 или 1. В принципе, тоже самое можно и с десятичными числами делать, какая разница

    вот было у нас число 165, если мы его сместим вправо на один разряд получится 16, ещё на один разряд - получится 1. А тут у нас двоичное число 10110100000, смещаем на один разряд (т.е. убираем последнюю цифру, фактически), получаем 1011010000, ещё на один разряд - получаем 101101000, ещё на один разряд - получаем 10110100, и т.д. Т.е. сместив на 5 разрядов, получаем 101101. Если сместим на ещё один разряд, уже уйдёт единица, будет 10110. А передние нули - это потому что у нас. Передние нули - это потому что у нас целая переменная имеет определённую разрядность (т.е. общее количество нулей и единиц в отведённой под неё памяти всегда одинаково). Смещение влево даст обратный эффект (ну мы же пишем слева направо). При смещении влево в конце появляются нули:

    1 << 1 = 10 (2) = 2 (10)
    2 << 1 = 100(2) = 4 (10)
    4 << 1 = 1000 (2) = 8 (10)

    Кстати, смещение влево всегда нам даёт умножение на 2, а в право - деление (только без дробной части и остатка). Так же как в десятичной системе давало бы умножение или деление на 10.
    --- Добавлено ---
    Вообще, разряды чисел в начальной школе ещё проходят (только в десятичной системе). Сотни, десятки, единицы. Разряд, ещё раз, - это в данном случае одна цифра в числе, в двоичной системе счисления цифры только две - 1 и 0.
     
    Fell-x27 нравится это.
  7. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    да , но не совсем в другой теме непонятно
     
  8. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    вот было у нас число 165, если мы его сместим вправо на один разряд получится 16, ещё на один разряд - получится 1. А тут у нас двоичное число 10110100000,
    не понял
     
  9. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Смещение вправо
    165
    16
    1

    Смещение влево
    165
    1650
    16500
     
    mkramer нравится это.
  10. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    теперь понял
     
  11. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    (126076330 & 28)
    надо сложить эти числа в десятичной или перевести в двоичную?
     
  12. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    & - это логическая операция над битами, а не математическая.
     
  13. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Нет, надо сделать побитовое логическое умножение. Оба числа перевести в двоичную систему, записать
    Код (Text):
    1.  
    2. 111100000111100010110101010
    3. 000000000000000000000011100
    4. ---------------------------
    5. 000000000000000000000001000
    1 & 0 = 0
    0 & 1 = 0
    0 & 0 = 0
    1 & 1 = 1

    А есть ещё логическое сложение, или по-другому "или":
    0|0 = 0
    0|1 = 1
    1|0 = 1
    1|1=1
    Ключевое слово - логическое, поэтому 1|1=1, а не 2 (1 + 1) - чувствуешь разницу?.
    --- Добавлено ---
    Про "исключающее или" и битовое отрицание оставляю тебе поискать самому инфу
    --- Добавлено ---
    В двоичную систему - поскольку в компьютерах всё в ней хранится, научить комп аппаратно понимать десятичные числа наверное возможно, но нецелесообразно. Знаю, была попытка создать машину с троичной системой счисления, но тоже популярность идея не получила. Сейчас основные двоичные операции канальные транзисторы способны выполнять с момента напыления, как нам в ВУЗе рассказывали
     
  14. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Первым делом, цифры из десятичной системы исчисления переводишь в двоичную,
    потому что там у тебя операция для двоичной системы,
    теперь у тебя есть два десятичных числа,
    над ними проводишь операцию & (И) https://secure.php.net/manual/ru/language.operators.bitwise.php
    $a & $b: Устанавливаются только те биты, которые установлены и в $a, и в $b.
     
  15. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    000000000000000000000001000
    >> 5
    00000000000000000000000100000000
    =256
    --- Добавлено ---
    не понял этот момент
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Тебе же толковали об этом. Двоичная система исчисления.
    1000 = 8
    >>5 = 100000000 = 256
     
  17. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @ubunta2 как записать 8 в двоичной системе? Как 256?
     
  18. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    8
    =1000
    256=100000000

    --- Добавлено ---
    000000000000000000000001000
    >>2
    00000000000000000000000100000=32
    echo "Цвет: " . ((126076330 & 28) >> 2) . "<br />";
    на экране 2
    --- Добавлено ---
    а все понял
    0000000000000000000000010=2
    --- Добавлено ---
    111100000111100010110101010

    000000000000011111111100000

    000000000000000010110100000=45
    все я понял ура

    --- Добавлено ---
    0000000000000000101101(00000)
    0000000000000000101101=45
     
    Fell-x27, umbabaraumba и denis01 нравится это.
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не заучить, так задрочить :D
     
  20. umbabaraumba

    umbabaraumba Новичок

    С нами с:
    18 июн 2017
    Сообщения:
    100
    Симпатии:
    17
    Молодец :)
    Переходим к следующей главе :)
     
  21. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    самое интересное, что через пару страниц идет объяснение
     
  22. umbabaraumba

    umbabaraumba Новичок

    С нами с:
    18 июн 2017
    Сообщения:
    100
    Симпатии:
    17
    Так я и писал, что если что-то не понятно то можно пропускать, и потом возвращаться.

    Не обязательно сразу с ходу пытаться все понять. Бывает так что не понятно сразу, потом возвращаешся и уже становиться понятно.
     
  23. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Главное не прыгать с главы на главу
     
  24. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    PHP:
    1. <?php ## Оператор ??
    2.  $x = NULL;
    3.   $y = NULL;
    4.   $z = 3;
    5.   var_dump($x ?? $y ?? $z); // int(3)
    6. ?>
    Parse error: syntax error, unexpected '?' in E:\OpenServer\domains\test.ru\exists.php on line 5
     
  25. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Здесь нет ошибок,просто код под php7.x
     
    denis01 и [vs] нравится это.