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ş:
Neden bu iki kez (1927) garip bir sonu...
Neden HTML düşün” renk? “chucknorris m...
Neden Google while(1); JSON yanıtların...
Neden char[] şifreler için Dize Java t...
Neden baskı "B" baskı " ...