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

  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006
  • Floortile83

    Floortile83

    16 Ocak 2010
  • modica89

    modica89

    24 HAZİRAN 2007