11 HAZİRAN 2014, ÇARŞAMBA
Neden = ben bana 0 verir mi?
Basit bir program var:
public class Mathz {
static int i = 1;
public static void main(String[] args) {
while (true){
i = i i;
System.out.println(i);
}
}
}
Bu programı çalıştırdığınızda, tek gördüğüm benim çıkış i
0
. İlk defa* *4, i = 2 2
, i = 4 4
vb tarafından takip ederdik yuvarlak beklerdim.
Sol tarafta re-ilan i
el-yan etmeye çalışıyoruz en kısa sürede, onun değerini sıfırlamak alır olması nedeniyle bu 8 ** için mi?
Eğer herkes bu ince detaya bana gelin eğer ben harika olurdu.
long
int
değişim ve beklendiği gibi baskı sayıları gibi görünüyor. Max 32-bit değeri vurur nasıl şaşırdım!
CEVAP
11 HAZİRAN 2014, ÇARŞAMBA
Konu tamsayı taşması nedeniyle.
32-bit ikişer-tamamlayıcı aritmetik:
i
nitekim-güç iki değerlere sahip başlar, ama sonra taşma davranışları 2 varınca başlar30:
230230= -231
-231-231= 0
...int
aritmetik.
Bunu Paylaş:
Neden bu iki kez (1927) garip bir sonu...
Neden toplam sırasını değiştirerek far...
Neden Listesi<T>.Dosyalarda grup...
Neden Javascript global bayrağı ile Re...
Neden bana C bir sabit, sabit bir char...