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

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006