SORU
13 EYLÜL 2011, Salı


(N & n) == n n bir güç 2 ise neden?

Line 294 of java.util.Random source diyor

if ((n & -n) == n) // i.e., n is a power of 2
    // rest of the code

Neden bu?

CEVAP
13 EYLÜL 2011, Salı


2. tamamlamak, -n çünkü ~n 1.

Eğer n 2, sonra bir güç ise sadece bir bit vardır. ~n tüm bitleri dışında belirledi. Özel bit tekrar n & (that thing) n eşit olmasını sağlamak ayarlayın 1, ve ekleyin.

Bunun tersi de doğrudur çünkü 0 ve negatif sayılar Java kaynağı bir önceki satır ile ekarte edildi. Eğer n birden fazla bit kümesi varsa, o zaman bir tane en yüksek bit. Bu bitdeğildüşük net bir şey var çünkü 1 tarafından ayarlanması"": . absorbe

 n: 00001001000
~n: 11110110111
-n: 11110111000  // the first 0 bit "absorbed" the  1
        ^
        |
        (n & -n) fails to equal n at this bit.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bunliu

    bunliu

    2 Mayıs 2007
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • Trevor Eckhart

    Trevor Eckha

    19 Aralık 2009