Intereting Posts
Предотвращение пустых данных при вставке в базу данных Использование терминала, как мне заставить OS X использовать версию MAMPs PHP Ошибка Hybridauth аутентификации! Facebook вернул неверный идентификатор пользователя ZF2: пользовательский картографический модуль для модуля ZfcUser Система голосования AJAX + PHP как загрузить изображение на сервере с помощью ajax в кордовой сборке Распознавание / обнаружение лица PHP или программное обеспечение для фото и видео галерей Как преобразовать несколько многобайтовых символов в его числовой объект html с помощью PHP? Как создать определенное количество эскизов из PDF с помощью Imagick, ImageMagick и PHP? Проверка загрузки файлов PHP Symfony 2.1 Расширение основных классов Как получить все после имени домена в строку Преобразование текста UTF8 для использования в URL-адресе получить текущую дату и дату после двух месяцев в php Как автоматически передать расширение на номер Twilio при вызове с обычного телефона?

Какова функция побитового оператора (Тильда)

Возможный дубликат:
Что здесь означает этот оператор?
Бит не работает в PHP (или, возможно, на любом другом языке)

Может кто-нибудь объяснить мне оператор ~ на PHP? Я знаю, что это НЕ-оператор , но почему PHP конвертирует следующую инструкцию в отрицательное значение переменной минус один?

 $a = 1; echo ~$a // echo -2 $a = 2; echo ~$a // echo -3 $a = 3; echo ~$a // echo -4 

    Это называется арифметикой дополнений двух . Вы можете прочитать об этом более подробно здесь .

    Оператор ~ является двоичным оператором отрицания (в отличие от логического отрицания), и тем самым он обращает все биты своего операнда. Результат – отрицательное число в арифметике дополнений двух.

    Это побитовое НЕ.

    Он преобразует все 1s в 0z и все 0s в 1s. Таким образом, 1 становится -2 (0b111111111110 в двоичном представлении).

    Взгляните на документ http://php.net/manual/en/language.operators.bitwise.php

    ~ переворачивает все биты числа. В двух дополнениях (google it) математическое отрицание можно реализовать, перевернув все биты и затем добавив 1. Если вы делаете только первый шаг (т. Е. Просто переверните биты), у вас есть добавочный инверсный минус 1.