Bazı matematiksel hesaplamalar yapıyorum (Matlab kodunu VS2010 kullanarak C++' ya dönüştürmeye çalışıyorum) ve bir noktada negatif 0 aldığımı anlayabilmem gerekiyor.C++ 'da çift olarak saklanan bir negatif 0'ı algılamak
IEEE standardına göre -0/+ 0 yalnızca işaret biti (kalanlar 0'dır).
ben 5/-5 ile çalışılıyor bir unsigned char
double f = -5;
unsigned char *c = reinterpret_cast<unsigned char *>(&f);
for(int i=(sizeof(double)-1); i>=0; i--){
printf("%02X", c[i]);
}
olarak benim çift yorumlamak için kod (post) aşağıdaki parça kullandık Beklediğim sonuç almak:
C014000000000000 (-5)
4014000000000000 (5)
Ama ben 0/-0 ile denediğimde her iki durumda da sadece sıfırları alırım. VS2010, IEEE uyumlu olduklarını belirtir (msdn).
Eğer 0/-0 gerçekten bellekte aynı şekilde saklanıyorsa, onlara ihtiyacım olursa bunları ayırt etmenin bir yolu yoktur, bu yüzden zamanımı boşa harcamam gerekir :) Doğru mu?
-0 – wimh