SORU
21 Mart 2012, ÇARŞAMBA


Neden numaralama izinleri genellikle 0, 1, 2, 4 değerleri var mı?

Neden insanlar hep 0, 1, 2, 4, 8 gibi numaralandırma değerleri kullanarak ve 0, 1, 2, 3, 4 değil mi?

Bu bir bit işlemleri yapmak, vb. var mı?

Gerçekten bu doğru bir şekilde nasıl kullanılacağı hakkında küçük bir örnek Pasajı takdir ediyorum :)

[Flags]
public enum Permissions
{
    None   = 0,
    Read   = 1,
    Write  = 2,
    Delete = 4
}

CEVAP
21 Mart 2012, ÇARŞAMBA


İki güçleri vardır ve bunu yapabilirim çünkü

var permissions = Permissions.Read | Permissions.Write;

Ve belki daha sonra...

if( (permissions & Permissions.Write) == Permissions.Write )
{
    // we have write access
}

Her set biraz izin (veya numaralandırılmış değeri mantıksal bir karşılık ne olursa olsun) karşılık gelir bit bir alandır. Eğer bu 1, 2, 3, ... olarak tanımlanmış olsaydı bu şekilde bit operatörleri kullanın ve anlamlı sonuçlar elde etmek mümkün olmaz. Daha derin defterleri...

Permissions.Read   == 1 == 00000001
Permissions.Write  == 2 == 00000010
Permissions.Delete == 4 == 00000100

Burada bir desen fark ettiniz mi? Şimdi eğer benim orijinal örnek alırsak, yani

var permissions = Permissions.Read | Permissions.Write;

Sonra...

permissions == 00000011

Gördün mü? Her iki Read Write bit ayarlanır, ve bağımsız (Delete bit olduğuna dikkat edin . kontrol edebilirim ^em>değilbu değer izin silmek ifade etmez. bu nedenle.

Bir bit tek bir alanda birden çok bayrak ve saklamanızı sağlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abbeydabby0277's channel

    Abbeydabby02

    9 ŞUBAT 2012
  • justintimberlakeVEVO

    justintimber

    2 EYLÜL 2009
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009