folder Tahribat.com Forumları
linefolder Java
linefolder Javadaki Long Tipi



Javadaki Long Tipi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dhmm
    dhmm's avatar
    Kayıt Tarihi: 15/Eylül/2011
    Erkek

    Arkadaslar

    Javadaki long tipinin aldigi maks deger 9223372036854775807.

    Simdi ben veri tiplerini incelerken soyle bisey yazdim.

     

    long long_num = (long)10e95;
    System.out.println(long_num)

     

    Burada long degiskenine 10x10^95 degeri vermiyor mu ? Bu sayi bundan buyuk degil mi ? Hemde kat kat... (benmi yanlis biliyorum ) 

    Compile ediyorum. Calistiriyorum ve aldigim cikti 9223372036854775807.

    OverflowException vermesi gerekmez mi ? Neden boyle yapiyor ?

    Biri aydinlatirsa sevinirim.


    Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver !!! // Hayatin herkes icin bir bavulu vardir !!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    aercys
    aercys's avatar
    Kayıt Tarihi: 12/Nisan/2008
    Erkek

    https://dzone.com/articles/overflow-and-underflow-data

    Hocam linkteki makalede yazdığına göre jvm tarafından herhangi bir warning yada exception üretilmiyor. 


    0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    iQsuz
    iQsuz's avatar
    Kayıt Tarihi: 21/Nisan/2008
    Erkek

    herhangi bir warning vermiyor mu?

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mastika.
    Absolut
    Absolut's avatar
    Kayıt Tarihi: 04/Ağustos/2011
    Erkek

    turun max min ogrenmek istiyorsan wrapperlerinin max min methodlarini kullanabilirsin kullanabilirsin

    System.out.println(Long.MAX_VALUE);

    System.out.println(Long.MIN_VALUE);

    edit : Burdanda yazim implicit ve explicit tur donusumlerini javada inceleyebilirsin.

     

    Absolut tarafından 03/Oca/16 23:03 tarihinde düzenlenmiştir

    Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Buremba
    Buremba's avatar
    Kayıt Tarihi: 16/Haziran/2006
    Erkek

    çoğu dilde yaptığın işlemler neticesinde overflow var mı diye kontrol edilmez pahalı bi işlem olduğu için. o long'u zilyon tane işlemden geçirebilirdin ve her birinde kontrol etseydi performans sıkıntısı gözle görülür olurdu.

    bu yüzden senin değerleri karşılaştırıp overflow/underflow var mı kontrol etmen gerekiyor. genelde generic library'ler kullanılıyor bu tarz işler için mesela guava var, onda primitives package'ı var onda bu tarz işlemler için basit helper methodları var. örnek olarak Ints.checkcast'a bakabilirsin. http://docs.guava-libraries.googlecode.com/git/javadoc/src-html/com/google/common/primitives/Ints.html#line.87


    . . .. . ... .
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    iQsuz
    iQsuz's avatar
    Kayıt Tarihi: 21/Nisan/2008
    Erkek
    Buremba bunu yazdı

    çoğu dilde yaptığın işlemler neticesinde overflow var mı diye kontrol edilmez pahalı bi işlem olduğu için. o long'u zilyon tane işlemden geçirebilirdin ve her birinde kontrol etseydi performans sıkıntısı gözle görülür olurdu.

    bu yüzden senin değerleri karşılaştırıp overflow/underflow var mı kontrol etmen gerekiyor. genelde generic library'ler kullanılıyor bu tarz işler için mesela guava var, onda primitives package'ı var onda bu tarz işlemler için basit helper methodları var. örnek olarak Ints.checkcast'a bakabilirsin. http://docs.guava-libraries.googlecode.com/git/javadoc/src-html/com/google/common/primitives/Ints.html#line.87

    tamamda bu overflow olayları compile edilirken incelenmiyo mu kod optimize yapılırken.

    mesela kullanmadığın bi değişkeni derlemeyen compiler, sayı overflow olunca hata yada warning verebilir.kod hızlı compile edilse ne olur yavaş edilse ne olur. önemli olan çalışırken ki hızı değil mi?

    bu arada java bilgim sıfır.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Buremba
    Buremba's avatar
    Kayıt Tarihi: 16/Haziran/2006
    Erkek
    iQsuz bunu yazdı
    Buremba bunu yazdı

    çoğu dilde yaptığın işlemler neticesinde overflow var mı diye kontrol edilmez pahalı bi işlem olduğu için. o long'u zilyon tane işlemden geçirebilirdin ve her birinde kontrol etseydi performans sıkıntısı gözle görülür olurdu.

    bu yüzden senin değerleri karşılaştırıp overflow/underflow var mı kontrol etmen gerekiyor. genelde generic library'ler kullanılıyor bu tarz işler için mesela guava var, onda primitives package'ı var onda bu tarz işlemler için basit helper methodları var. örnek olarak Ints.checkcast'a bakabilirsin. http://docs.guava-libraries.googlecode.com/git/javadoc/src-html/com/google/common/primitives/Ints.html#line.87

    tamamda bu overflow olayları compile edilirken incelenmiyo mu kod optimize yapılırken.

    mesela kullanmadığın bi değişkeni derlemeyen compiler, sayı overflow olunca hata yada warning verebilir.kod hızlı compile edilse ne olur yavaş edilse ne olur. önemli olan çalışırken ki hızı değil mi?

    bu arada java bilgim sıfır.

    aslında java ile pek alakası yok bu şekilde olmayan bir dil yok benim bildiğim. iki çeşit analiz şekli var biri static biri runtime. compiler static analysis olayını yapabiliyor sadece ama runtime olayını yapamıyor doğal olarak simulasyon falan yapması lazım ki onu da unit test yazarak yazılımcının yapması lazım. eğer sen kodun içerisinde bir long tanımlayıp değerine de long olamayacak birşey atarsan compiler hata verir normal şartlar altında. 10e95 aslında değeri double olan bir sayı, sen double long_num = 10e1595;  yaparsan compiler'ın hata vermesi lazım.

    arkadaşın yaptığı ise statik bir değeri alıp long'a cast etmek yani biraz daha kompleks. compiler aslında bu durumda da hata verebilir, vermesi lazım ama demek ki o kadar zeki değil. ama genel olarak dışardan input alıp da çok rahat overflow yapabileceğin için compiler'lar bu işi yazılımcıya bırakıyorlar çünkü işi tam olarak çözemeyeceklerini bildikleri için o kadar kasmıyorlar anladığım kadarıyla.

    benim de compiler'lar hakkında bilgim sınırlı ama stackoverflow'da sorulabilir bir soru javac 1.8 bile hata vermiyor arkadaşın yazdığı koda.


    . . .. . ... .
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Buremba
    Buremba's avatar
    Kayıt Tarihi: 16/Haziran/2006
    Erkek

    hatta merak ettim eğer arkadaşın izni varsa stackoverflow'da sorabilirim soruyu. aslında o kadar da kompleks bir ifade değil java'nın bunu anlaması lazım normalde static analysis yaparken, altında başka bir sebep yatıyor olabilir.


    . . .. . ... .
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    buzukatak
    buzukatak's avatar
    Kayıt Tarihi: 27/Haziran/2010
    Erkek

    Java'da bu konuda C / C++'ın izinden gitme durumu var (acı şekilde öğrendim). Bu ne performans ne başka bir konu ile ilgili, tamamen tasarım icabı.

    Kontrol etmek sizin sorumluluğunuzda.


    anlıyorum.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dhmm
    dhmm's avatar
    Kayıt Tarihi: 15/Eylül/2011
    Erkek
    Buremba bunu yazdı

    hatta merak ettim eğer arkadaşın izni varsa stackoverflow'da sorabilirim soruyu. aslında o kadar da kompleks bir ifade değil java'nın bunu anlaması lazım normalde static analysis yaparken, altında başka bir sebep yatıyor olabilir.

    hocam bu isin izni mi olur :) sor tabi.


    Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver !!! // Hayatin herkes icin bir bavulu vardir !!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dhmm
    dhmm's avatar
    Kayıt Tarihi: 15/Eylül/2011
    Erkek

    ddetayli yazacagim. mobildeyim.

    int tipinde overflow varsacompile etmiyor.

    sanirsam longda da 10e400 koyuncs compile etmedi cast isslemiyle.

    absolut arkadsin dedigine gore java burada cast ederken verilen degerden alabildigi kdr aliyormus. yani maks degeri aliyor ve gerisi kaliyot.

    yazacam sonra


    Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver !!! // Hayatin herkes icin bir bavulu vardir !!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin
Toplam Hit: 4466 Toplam Mesaj: 12
java