SORU
4 Kasım 2012, Pazar


Neden bayrak çeteleler genellikle onaltılık değerler ile tanımlanır

Onaltılık değerleri kullanan bayrak numaralandırma bildirimleri görüyorum bir çok kez. Örneğin:

[Flags]
public enum MyEnum
{
    None  = 0x0,
    Flag1 = 0x1,
    Flag2 = 0x2,
    Flag3 = 0x4,
    Flag4 = 0x8,
    Flag5 = 0x10
}

Bir numaralama ilan ediyorum, ben genelde bu şekilde beyan:

[Flags]
public enum MyEnum
{
    None  = 0,
    Flag1 = 1,
    Flag2 = 2,
    Flag3 = 4,
    Flag4 = 8,
    Flag5 = 16
}

Bazı insanlar onaltılık yerine ondalık değer kitap yazmak için neden bir sebep ya da gerekçe var mı? Gördüğüm kadarıyla, daha kolay hex değerlerini kullanarak ve yanlışlıkla Flag5 = 0x10 yerine Flag5 = 0x16 yazarken karıştı.

CEVAP
4 Kasım 2012, Pazar


Gerekçeleri farklı olabilir, ama görüyorum ki bir avantaj onaltılık seni hatırlatıyor: "Tamam, onluk taban artık insan-icat keyfi dünyanın numaraları ile uğraşmıyoruz. Bit ile karşı karşıyayız - makine dünyası - ve onun kurallarına göre oynayacağız." Onaltılık nadiren veri bellek yerleşimini önemli yere nispeten düşük-seviye konular ile uğraşıyoruz sürece kullanılır. Bunu kullanarak o an içinde bulunduğumuz durum aslında ipuçları.

Ayrıca, C emin değilim# ama C x << y geçerli bir derleme zamanı sabiti.olduğunu biliyorum Bit vardiya kullanarak gibi en açık:

[Flags]
public enum MyEnum
{
    None  = 0,
    Flag1 = 1 << 0,
    Flag2 = 1 << 1,
    Flag3 = 1 << 2,
    Flag4 = 1 << 3,
    Flag5 = 1 << 4
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • Matt Steffanina

    Matt Steffan

    1 EYLÜL 2011
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011