2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Yleensä int-tyyppinen muuttuja vie 4 tavua, 1 tavu on 8 bittiä ja jokaisella bitillä on kaksi tilaa: 0 ja 1, joten int-tyypin muuttuja voi edustaa yhteensä 2^32 tilaa (eli se voi edustaa 2^8 datan arvo).
Alkaa klo 07:36
lisää ymmärrystä
kysyä: Yllä olevista kahdesta videosta voimme tietää, että int-tyypin positiivisten kokonaislukujen alue on 1 ~ 2^31 - 1. Jos verrataan tätä logiikkaa negatiivisiin kokonaislukuihin, voidaan esittää kokonaislukualue. int-tyypin mukaan ei pitäisi olla -2^31 + 1 ~ 2^31 -1? Koska arvoa 2^31 ei voida saada, miksi -2^31 voidaan saada?
vastaus:Tietojenkäsittelytieteessä yleisimmin käytetty etumerkitty kokonaislukuesitys onkahden komplementtiesitys . Tämä menetelmä ei ainoastaan ratkaise positiivisten ja negatiivisten lukujen esittämisongelmaa, vaan myös yksinkertaistaa binäärisiä yhteen- ja vähennysoperaatioita. Katsotaanpa tätä esitystä yksityiskohtaisesti:
1. Positiivinen luku : Positiivisten lukujen binääriesitys on sama kuin etumerkittömien lukujen. Esimerkiksi luvun 3 3-numeroinen binääriesitys on 011.
2. negatiivinen numero : Negatiivisten lukujen esitys saadaan aikaan positiivisten lukujen komplementilla. Negatiivisen luvun kahden komplementti lasketaan kääntämällä luvun itseisarvon binääriesitys ja lisäämällä 1. Esimerkiksi:
① Negaatio: Käännä ensin luvun 3 011 binääriesitys 100:ksi.
② Lisää 1: Lisää 1 100:aan saadaksesi 101, joten kahden komplementin -3 esitys on 101.
32-bittisellä kokonaislukumuuttujalla sen korkein bitti (kutsutaan myös etumerkkibitiksi) edustaa etumerkkiä, 0 edustaa positiivista ja 1 on negatiivinen. Loput 31 bittiä käytetään esittämään numeerisia arvoja.Seuraavaksi takaisin juuri esitettyyn kysymykseen:
1. Positiivinen alue (mukaan lukien 0) : Etumerkkibitti on 0, ja loput 31 bittiä voivat edustaa arvoja välillä 000…000 (31 0s) - 011…111 (31 1s). Vastaava desimaalialue on 0 - 2^31 - 1.
2. Negatiivinen alue : Etumerkkibitti on 1, ja loput 31 bittiä voivat edustaa arvoja 100...000 (31 0s) - 111...111 (31 1s). Niistä kahden komplementtiluku 100...000 (31 nollaa) edustaa arvoa -2^31 ja vastaava desimaaliarvo on -2^31. Kahden komplementtiluku 111...111 (31 ykköstä) edustaa -1:tä ja vastaava desimaaliarvo on -1.
Positiivinen lukualue: 1 ~ 2^31 - 0 negatiivinen lukualue: -1 ~ -2^31, kokonaisluku on edelleen 2^32 eri tilaa. Siksi yleensä int-tyypin kokonaisluvun arvoalue on -2147483648 ~ 2147483647 (eli -2^31 ~ 2^31 - 1)
Kuinka monta tavua 64-bittinen int vie Ero kokonaislukutyyppien int, long ja long long välillä?
Kuinka monta tavua 64-bittinen int varaa?
Ero 32- ja 64-bittisten koneiden välillä ja perustietotyyppien käyttämien tavujen määrä
C-kielen kokonaislukutyyppi (mukaan lukien arvoalue ja pituus)
Kuinka monta tavua int-tyyppi vie?
Int-tyypin ja osoitintyypin datakoko eri alustoilla
Java sizeof() -ongelma
Int-tyypin muuttujat Pythonissa voivat tallentaa minkä tahansa kokoisia kokonaislukuja
Yhteenveto:
- C:n ja C++:n tietotyyppikokoon vaikuttavat käännösstandardi, kääntäjä, käyttöjärjestelmän bittimäärä jne.
- Java- ja Python-tietotyyppien koko määräytyy kielimäärityksen tai tulkin toteutuksen mukaan, eivätkä tekijät, kuten kääntäjä ja käyttöjärjestelmän bittimäärä, vaikuta siihen.
- Pääsyy tähän suunnittelueroon on se, että C ja C++ ovat järjestelmän ohjelmointikieliä, joiden on yleensä oltava suoraan vuorovaikutuksessa laitteiston kanssa, joten tietotyyppien koko vaihtelee taustalla olevan ympäristön mukaan, kun taas Java ja Python ovat korkealaatuisia; tason ohjelmointikielet, joilla on korkeampi abstraktiotaso. Suunnittelun tavoite on eri alustojen välinen yhtenäisyys.