pienin integer eri kuin javassa

Anonyymi

10

1464

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
      • Anonyymi

        Mutta kun -32768 ei kuuluu lukualueeseen, esim abs(-32768) antaa vastauseksi -32768 c-kielessä


      • Anonyymi

      • Anonyymi
        Anonyymi kirjoitti:

        tuolla on myös -32768 ... 32767

        https://en.wikipedia.org/wiki/C_data_types

        Ilmeisesti voi toimia oikein -2^n (n kuvaa suurin potenssia ko. lukualueelle) arvolla, mutta se ei ole varmaa: viite a b c d ja e


      • Anonyymi kirjoitti:

        Mutta kun -32768 ei kuuluu lukualueeseen, esim abs(-32768) antaa vastauseksi -32768 c-kielessä

        -32768 kuuluu lukualueeseen mutta abs(-32768) = 32768 ei kuulu.


      • Anonyymi
        Anonyymi kirjoitti:

        Mutta kun -32768 ei kuuluu lukualueeseen, esim abs(-32768) antaa vastauseksi -32768 c-kielessä

        Tuo ei ehkä pidä paikkaansa mutta jotain ongelmaa oli :)


    • Anonyymi
    • Nähtävästi olin väärässä ja C standardin mukaan lukualue todella on "ainakin -32767 .. 32767".

      Syy on historiallinen. Tietokoneiden alkuaikoina oli useita eri tapoja miten negatiivisia lukuja esitettiin binäärimuodossa. Joissakin prosessoreissa lukualue oli -32767 .. 32767 ja toisissa -32768 .. 32767 ja yhteensopivuuden vuoksi C standardi tukee lukualuetta "ainakin -32767 .. 32767" joka on yhteensopiva noiden molempien kanssa.

      Esimerkiksi Java sen sijaan on sen verran "uusi" ohjelmointikieli että sen ei tarvinnut tukea historiallisia prosessoreja joiden lukualue oli -32767 .. 32767, vaan se pystyi ottamaan lukualueeksi tuon -32768 .. 32767 jota käytännössä kaikki uudemmat prosessorit käyttivät.

      Nykyään käytännössä kaikki prosessorit käyttävät "kahden komplementti" muotoa jossa lukualue on -32768 .. 32767 myös kun käytetään C-kieltä.

      • Anonyymi

        Mistähän sinä tuon tarinan löysit


      • Anonyymi kirjoitti:

        Mistähän sinä tuon tarinan löysit

        Useista lähteistä yhdistelin, esimerkiksi:

        https://en.wikipedia.org/wiki/C_data_types#cite_note-restr-5
        "The minimal ranges −(2^(n−1)−1) to 2^(n−1)−1 (e.g. [−127,127]) come from the various integer representations allowed by the standard (ones' complement, sign-magnitude, two's complement). However, most platforms use two's complement, implying a range of the form −2^(m−1) to 2^(m−1)−1 with m ≥ n for these implementations, e.g. [−128,127] (SCHAR_MIN = −128 and SCHAR_MAX = 127) for an 8-bit signed char."

        https://en.wikipedia.org/wiki/Signed_number_representations#History
        - negatiivisten lukujen esitystapojen historiaa


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Huomenta ihana

      Kauniskasvoinen ihanuus 😘 saan sut vielä
      Ikävä
      45
      7372
    2. Hei rakas...

      Miten on työpäivä sujunut? Rakastan sinua 💗
      Ikävä
      32
      4068
    3. Ei tämä etene ikinä

      Kun kumpikaan ei enää ota yhteyttä. Mä en ainakaan uskalla.
      Ikävä
      57
      3605
    4. Edelleen sitä on vaikea uskoa

      Että olisit oikeasti rakastunut muhun
      Ikävä
      50
      3130
    5. Vitsi mihin menit. Heti takasin.

      Mä näin sut tuu takasin! Oli kiire, niin en ehtiny sin perään!
      Ikävä
      17
      2806
    6. Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...

      Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons
      Suomalaiset julkkikset
      51
      2314
    7. Miksi et irrota otettasi

      Suhteeni?
      Ikävä
      53
      2307
    8. Toiveikas vai toivoton

      torstai? Ajatuksia?
      Ikävä
      37
      2258
    9. Koko ajan olet

      Senkin suhteen kiusannut. Halut on ihan mielettömät olleet jo pitkään
      Ikävä
      43
      2258
    10. Mukavaa päivää

      Mun rakkauden kohteelle ❤️ toivottavasti olet onnellinen
      Ikävä
      16
      2236
    Aihe