SORU
16 ŞUBAT 2013, CUMARTESİ


Bu boolean dönmek ne demek?

On CodeReview I kodu çalışan bir parça gönderildi ve ipuçları geliştirmek istedi. Ben eğer bir ArrayList endeksleri gerekli olan) bir çift sayı olsaydı kontrol etmek için bir boolean yöntemi kullanmak oldu. Bu önerilen kodu:

private static boolean isEven(int number)
{
    return (number & 1) == 0;
}

Zaten bir sürü yardım için, belirli bir kullanıcı gölgesi gibi, zaman ben taciz ediliyorum YANİ toplum karar verdim! Bu işler nasıl yürüyor anlamıyorum. Bu yöntemi çağrılır ve parametre olarak ArrayList boyutu (on öğe vardır yani ArrayList, sayı = 10) alır.

& Bir tek sayı karşılaştırma ve 1, ama sonra kayboldum çalışır biliyorum.

Okuduğum kadarıyla, dönüş number == 0 1 == 0 Eğer doğru söylüyor. İlk gerçek olmadığını biliyorum ve ikincisi açıkçası mantıklı gelmiyor. Biri bana yardımcı olabilir mi?

Edit: muhtemelen herkes merak durumunda iş kodu mu eklemek gerekir.

CEVAP
16 ŞUBAT 2013, CUMARTESİ


"&" Düzeyinde bir işlemdir. bunu aklında tut Muhtemelen, bunun farkındayız, ama benim için çok net değil soru yöneltilen yoldan dayalı.

Bu teorik fikir 1'ler ve 0'lar bazı dizi bit olarak ifade edilebilen bazı int zorunda olduğunu söyledi. Örneğin:

...10110110

1 sayısı, bit sürümünü bile, ve ne zaman biteceğini 0, biter zaman 2, taban olduğundan ikili, garip.

Bu nedenle, bir bit ve üzeri için 1 ile

...10110110 & ...00000001

Tabii ki, bu 0, bu yüzden orijinal giriş bile görebiliriz.

Alternatif olarak, tek bir sayı düşünün. Örneğin, yukarıda yaşadıklarımız için 1 ekleyin. Sonra

...10110111 & ...00000001

1, ve bu nedenle, sıfıra eşit değil. eşittir Voila.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007
  • Trulia

    Trulia

    29 Kasım 2006