Merhaba,

BigDecimal.class'ını incelerken while döngüsünün şöyle bir kullanımını gördüm.
long valBits = Double.doubleToLongBits(val);
int sign = ((valBits >> 63)==0 ? 1 : -1);
int exponent = (int) ((valBits >> 52) & 0x7ffL);
long significand = (exponent==0 ? (valBits & ((1L<<52) - 1)) << 1
            : (valBits & ((1L<<52) - 1)) | (1L<<52));

exponent -= 1075;

while((significand & 1) == 0) {
    significand >>= 1;
    exponent++;
}

Döngüye ait koşulun nasıl çalıştığını açıklar mısınız? Ve daha başka ufuk açıcı kullanımları varsa paylaşır mısınız? (Örneğin for döngüsü için for (; len > 0; offset++, len--) gibi )

soruldu: 05 Mar '13, 07:01

sonic's gravatar image

sonic
0135
cevap kabul oranı: 0%

değiştirildi: 05 Mar '13, 07:05

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288

java 8 mi bu?

(05 Mar '13, 07:29) Turgay Can Turgay%20Can's gravatar image

Burada while içindeki & işaretinin anlamı bitwise AND operatörüdür. Yani significand değeri ile 1 değerini bit bit AND işlemine sokar. Bu iki sayının AND işlemi yapılmış halini de sıfırla karşılaştırarak while'ın koşulunu elde eder.

Ayrıca tek & işaretinin diğer bir kullanımı daha var benim bildiğim. O da şu şekilde örneğin while içinde iki tane koşulumuz var.

while(condition1 && condition2)

Burada ilk önce condition1 kontrol edilir eğer condition1 yanlış (false) ise ikinci condition kontrol edilmez. Fakat şu şekilde tek & kullanırsak

while(condition1 & condition2)

burada ise condition1 doğru da yanlış da olsa condition2 kontrol edilir.

For döngüsünün ise bildiğim iki kullanım şekli var birincisi koşul kontrollü döngü diğeri, ise bir dizi ya da collection içinde tüm elemanları dolaşmak için, bu tip for eachle aynı şekilde çalışır.

Döngü şeklindeki forda ise ilk virgüle kadar ilkleme işlemleri yani kullandığımız bir değişkenin değerini for içine girmeden değiştirmek ya da sadece for içinde kullanılacak değişken tanımlamak için kullanılır. İkinci kısım ise döngü koşulunu belirtir yani o koşul sağlandığı sürece for döngüsü dönmeye devam eder. üçüncü kısım ise for döngüsü her başa döndüğünde yapılacak işlemleri gösterir.

Senin örneğine gelecek olursak ilk virgüle kadar olan kısım boş bırakılmış yani bir ilkleme yapılmamış. İkinci kısımda len > 0 diyerek len değişkeni 0'dan büyük olduğu sürece for döngüsü dönsün denmiş. Üçüncü kısımda ise offset++, len-- denmiş yani her for döngüsünde offset değerini bir arttır len değerini ise bir azalt denmiş. ++ ve -- değerleri sağ tarafta olduğu için ilk önce kontrol yapılır sonrasında değerler değiştirilir. Yani len değeri 0la karşılaştırıldıktan sonra değeri bir azaltılır.

permanent link

cevaplandı: 06 Mar '13, 15:40

goksel's gravatar image

goksel
82071728
cevap kabul oranı: 8%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079

Soruldu: 05 Mar '13, 07:01

Görüntüleme: 456 kez

Son güncelleme: 07 Mar '13, 06:57

powered by BitNami OSQA