Merhaba arkadaşlar,

Yazılımda bazı anlamadığım şeyler var.

Mesela | ve & operatörleri mantıksal sınamalarda JavaScript, C#, Java ve PHP'de || veya, && ise and anlamında kullanılıyor.

Buraya kadar tamam, burada bir sıkıntı yok. Ama JS ile şu şekilde bir ifade gördüm:

var a = b | c; //b null, false veya set edilmemişse. c'yi ata anlamına geliyor sanırım (doğru mu emin değilim)

var a = b & c; //galiba yukarıda olanın tam tersi

yukarıda ne gibi anlamları olabiliyor?

Birde Android ile geliştirme yaparken Java kodlarında şöyle bir ifade gördüm:

editText.InputType(inputType.TYPE_CLASS_TEXT | inputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

bu editText'i şifreli gösteriyor.
Anlamadığım şu ki, TYPE_TEXT_VARIATION_VISIBLE_PASSWORD şifreli göstermek için bir sabit (Enum sanırım). Tamam bunu anladım ama neden bir de TYPE_CLASS_TEXT kullanıyorum neden ikisini | operatörü ile kullanıyoruz?

Bana bunların mantığını anlatabilir misiniz?