pienin integer eri kuin javassa

Anonyymi

10

1671

    Vastaukset 10

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Positiivisia ja negatiivisia lukuja on eri määrä koska myös nolla on mukana.

      Esimerkiksi 16-bittinen luku jolla on 65536 eri arvoa:
      32768 negatiivista lukua (-32768 .. -1)
      32767 positiivista lukua (1 .. 32767)
      1 nolla (0)
      32768 32767 1 = 65536

      Näin on myös C ja C kielissä.

      Näillä sivuilla on siis väärää tietoa:
      https://codescracker.com/c/c-data-types.htm
      https://codescracker.com/cpp/cpp-data-types.htm

      • 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. Puukotus Kajaanissa

      Kuka puukotti ja ketä? https://yle.fi/a/74-20247765 Vähemmän yllättäen päihteet mainittu
      Kajaani
      59
      1511
    2. Taas henkirikos

      Kuka lienee nyt asialla.
      Ilomantsi
      26
      1134
    3. 82
      992
    4. Mitä söpö

      Mies mietit?
      Ikävä
      65
      806
    5. Nyt se syksy on sitten alkanut

      Esimerkiksi tänään sataa aamusta iltaan, ja nytkin.
      Maailman menoa
      36
      800
    6. Nainen, tässä olen kahden vaiheilla

      Toinen pitäisi valita ja kummassakin on hyvät ja huonot puolensa. Toinen olisi sellainen pysyvä mutta työläs. Toinen taa
      Ikävä
      69
      774
    7. Minä en ole koskaan

      Rakastanut ketään toista yhtä paljon kuin sinua
      Ikävä
      90
      723
    8. Miten uskallan sua nähdä

      Kun vaikutat suuttuneelta :(
      Ikävä
      47
      722
    9. Humalassa autolla ajo.

      Tuhti humala hyydytti kuljettajan Suomussalmella -sammui rattiin ,uutisoi Ylä-Kainuu.
      Suomussalmi
      13
      710
    10. Hyvä on sitten, jos et sitä s*ksiä halua kanssani.

      Rakastetaan vaan toisiamme, voin käydä muualla tyydyttämässä fyysisenpuolen tarpeet. Puhumalla tämäkin olisi selvinnyt.
      Ikävä
      131
      705
    11. Tiesitkö? Jorma Uotisen EX-rakas on Helena Lindgren - Nämä ovat välit nyt: "Me ollaan..."

      Jorma Uotinen ja Helena Lindgren olivat avoliitossa v. 1982-1999. Pariskunta oli aikansa näyttävä julkkispari, missä i
      Kotimaiset julkkisjuorut
      19
      685
    12. Vähän pitää

      Kiusia ja näyttää
      Ikävä
      115
      666
    13. Suloinen ja herkkä

      Toiset huomioiva, räväkkä, yllättävä. Ei sellaisesta voi olla pitämättä.
      Rakkaus ja rakastaminen
      31
      605
    14. Jäljitelmä Birginit

      Ei jumaleisson, Jeffin vaimo kertoo et nää Hermesit olikin jäljitelmiä ja timangit labrarääsää. Anna mun kaikki kestää �
      Kotimaiset julkkisjuorut
      141
      601
    15. Hurja pako Kuhmossa

      19 vuotias kaahasi humalassa jalkakäytävälle tänään. Kuka mitä häh.
      Kuhmo
      4
      592
    16. Taidat olla

      Luovuttanut jo minun suhteeni osalta?
      Ikävä
      43
      581
    17. Minä muistan

      Minä muistan sinut nauravana. Sellaisena, joka sai tavallisenkin hetken tuntumaan vähän kevyemmältä, kuin huoneeseen ol
      Ikävä
      45
      570
    18. Hyvää yötä hurmuri

      Iltaa haaveeni! Kauniita unia😘 Jospa me vielä nähtäis ja juteltais, suukoteltais ja halittais, siliteltäis ja hyväiltä
      Ikävä
      24
      523
    19. Mä voisin rakastua noihin tähti silmiin

      Katseesi on niin lumoava nainen💚.
      Ikävä
      18
      522
    20. Jos tullaan toisiamme vastaan, niin

      pitäiskö pysähtyä ja onnitella?
      Ikävä
      41
      518
    Aihe