Bu ~ operatör burada ne demek?

5 Cevap

Örnek:

set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);

ne demek şimdi geliyor?

5 Cevap

Bu not operator (aynı zamanda "tamamlayıcı") 'dir. İşte ~ $a $a koymak değildir olanlardır belirlenen bit.

Öyleyse

E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE

olan E_ALL ayarlanır ve bit-E_STRICT ayarlanan olmayanlar, E_WARNING ve E_NOTICE. Bu temelde sıkı, uyarı ve ihbar hataları hariç tüm hataları söylüyor.

Bu bitwise-not operator bulunuyor. Örneğin ikili gösterimi ile bir dizi bitdüzeyi zıtlık 01011110 10100001 olacaktı; her bit karşıtına çevrilmiş.

Bu not bitwise operatörü bulunuyor. Burada bitsel operatörler hakkında okuyun:

http://php.net/manual/en/language.operators.bitwise.php

Bkz Bitwise Operators: o "değil" operatörü bulunuyor (quoting):

~ $a
Bits that are set in $a are not set, and vice versa.


Which means, taking an example inspired from what you posted, that this portion of code :

var_dump(decbin(E_STRICT));
var_dump(decbin(~E_STRICT));

Bu çıktıyı alırsınız:

string '100000000000' (length=12)
string '11111111111111111111011111111111' (length=32)

(Add a couple of 0 ilk satırın sol dolgu için, ve ne demek istediğimi görürsünüz)


Removing the padding from the second output, you get :

100000000000
011111111111

Hangi ~ operatörü bir 1 Intput içinde eşit olduğu her bit için 0 biraz verdi anlamına gelir - ve tersi,

Bitwise arasındaki ayrım (&, |, ~) ve non-bit (&&, | |!) Operatörler bit, tamsayı all bit genelinde uygulanan olmasıdır non-bit iken (sıfır) değer tek bir "gerçek" (sıfır olmayan) ya da "yanlış" olarak bir tamsayı davranın.

Say, $flag_1 = 00000001 ve $flag_2 = 00000010. Her iki sonuç $flag_1 & $flag_2 00000000 olurdu, ($flag_1 && $flag_2 "true" olan), non-bit işlemler için "doğru" olarak ve [(4)] {sonucu olur } 00000011 olacaktır. ~$flag_2 zaman çalışan bir sonuç için bitsel ANDed ki, 11111101 olacaktı clear bu biraz pozisyon (xxxxxx0x). $flag_2 bit-ORed çalışan bir sonuç olur set bu biraz pozisyon (xxxxxx1x).