SORU
26 EYLÜL 2013, PERŞEMBE


2^32 üzerinde numaralama bayrakları

Benim uygulamada Numaralama bayrakları kullanıyorum. Numaralama 50 civarında değer alabilir, değerleri 2^50 kadar gidin. Sadece merak ediyorum, ben Math.Pow(2, variable) Bu hesaplamak için kullanabilir mi?

Bence bunu yapmaya çalıştığımdasabit değerderleme zamanı hatası. Başka bir yol, 2 el ile bu güçleri hesaplamak ve bunu uygulamaktan başka var mı?

Ben ne yapıyorum burada:

[Flags]
internal enum RiskStates : long
    {
        None = 0,
        AL = Convert.ToInt64(Math.Pow(2,0)),
        AK = 2,
        AZ = 4,
        AR = 8,
        CA = 16,
        CO = 32,
        CT = 64,
        DC = 128,
        DE = 256,
        FL = 512,
        GA = 1024,
        HI = 2048,
        ID = 4096,
        IL = 8192,
        IN = 16384,
        IA = 32768,
        KS = 65536,
        KY = 131072,
        LA = 262144,
        ME = 524288,
        MD = 1048576,
        MA = 2097152,
        MI = 4194304
}

CEVAP
26 EYLÜL 2013, PERŞEMBE


Bence bunu yapmaya çalıştığımdasabit değerderleme zamanı hatası.

Aslında eğer long edebi zorlamak için L soneki kullandıysanız iyi olurdu - ama hala ideal onları belirtmek için el ile yapmak için değil. ("Belli ki" zaman kodu okuma.) doğru değil

Bu ifade, bir derleme zamanı sabiti olmalı Math.Pow kullanabilirsiniz.- ama bit kaydırma kullanabilirsiniz:

None = 0,
AL = 1L << 0,
AK = 1L << 1,
AZ = 1L << 2

vb. Daha fazla yine de okunabilir:) iddia ediyorum

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007
  • Tina Chen

    Tina Chen

    26 Mayıs 2012
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007