Mistä johtuu että pienin int on yhtä suurempi kuin -2^n
https://codescracker.com/c/c-data-types.htm
https://codescracker.com/cpp/cpp-data-types.htm
https://codescracker.com/java/java-integers.htm
Myös tuolla määritellään alueet kuten javassa
https://en.wikipedia.org/wiki/Integer_(computer_science)
esim.
Signed: From −32,768 to 32,767, from −(2^15) to 2^15 − 1
c:ssä ja c :ssa esim.
−32,767 to 32,767
pienin integer eri kuin javassa
10
1671
Vastaukset 10
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 kirjoitti:
Mutta kun -32768 ei kuuluu lukualueeseen, esim abs(-32768) antaa vastauseksi -32768 c-kielessä
tuolla on myös -32768 ... 32767
https://en.wikipedia.org/wiki/C_data_types - Anonyymi
Anonyymi kirjoitti:
tuolla on myös -32768 ... 32767
https://en.wikipedia.org/wiki/C_data_typesIlmeisesti 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
Tuolla on -32768
ovelasti -2147483648 merkitty -2147483647 - 1
tuo johtuu kait siitä että literaali tulkitaan ensin positiivisena ja sitten vasta vaihdetaan etumerkkiä ja 2147483648 olisi liian suuri positiivinen luku
https://docs.microsoft.com/en-us/cpp/c-language/cpp-integer-limits?view=msvc-160 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
- 43935
- 95913
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ä i19775- 116721
Anteeksi J-mies
Anteeksi että myötävaikutin siihen että rakastuit minuun, jota et voi koskaan saada. Viimeksi kun näimme ja katselimme t80678- 43621
Olet nainen ollut vaikein rasti
Eniten olet tunteitani myllännyt ja niitä kuluttanut, ja tuottanut. 🤔34614Minä muistan
Minä muistan sinut nauravana. Sellaisena, joka sai tavallisenkin hetken tuntumaan vähän kevyemmältä, kuin huoneeseen ol45600- 19586
- 46568
Kenen viisautta on ollut laittaa tie väärällä murskeella pilalle
Kenen viisautta on ollut kun Siimeksen/Kylmänpurontie pantu pilalle kun on ajettu liian karkeaa mursketta. Rengasliikke20535- 33533
- 36512
Siinä kävi mies nyt niin että tämä ämmä muuttaa ulkomaille
Vuonojen maa kutsuu, joten ei hätää. Et kuule minusta enää. 😂 Lycka till! Ämmä riittää.66509- 25492
Mitä muuta on olemassa kuin lisääntyminen
Jos mies ei pääse lisääntymään niin mikä hänen osansa elämässä on? mitä jää jäljelle? Hän on vain muiden palvelija kok106477Ähtäri on taas TV: n ja radion ykkösuutinen
Uusi podcast on julkaistu ja on nyt kuunneltavissa. Mot on tehnyt hyvää työtä! Mikko Savola ja kepu ei ota mitään vast44476Koska Martina viettää aikaansa lapsiensa kanssa
Äiti vaan juoksee miehen perässä Tallinnassa, Lontoossa, Turussa. Kyllä oli kätilö oikeassa, kun sanoi, että ei olisi ka132460- 44454
Pahkalassa tapahtuu
Mitäs on tapahtunut yöllä pahkalan kerrostaloilla.oli poliisia ja ambulanssia taas vaihteeksi7427