Ratkaistu: / tehtävää

Muuttujat C-kielessä

Tositoimiin (0.5p)

Kuvaa miten C-kielen muuttuja int32_t luku = -345; tallentuisi muistiin, joka koostuu 8-bittisistä muistipaikoista.
Anna vastaus ao. muodossa alekkain, niin monta 8-bittistä muistipaikkaa kuin tarvitset jokainen omalla rivillään. Tarvittaessa huomioi kurssilla sovitut tavu- ja bittijärjestys. Muistiosoitteet alkaa nollasta ja osoitteessa on siis 4 bittiä. Muistipaikan arvo 8-bittinen. Käytä binäärilukuja.
muistiosoite:sisältö
Esimerkki. Muuttuja uint8_t esim = 9; tallentuisi muistiin seuraavasti..
0000:00001001
Sinun täytyy kirjoittaa yksi rivi jokaista muistiosoitetta kohden.
Sinulla on vain 5 yritystä vastata tähän kysymykseen oikein.

Varoitus: Et ole kirjautunut sisään. Et voi vastata.

Muistia säästävien muuttujatyyppien valinta (0.75)

C-kielessä joidenkin muuttujatyyppien käyttämän muistin määrä riippuu kääntäjästä ja kohdearkkitehtuurista.
Tarkastele seuraavaa ohjelmaa:
#include <stdio.h>

int main(void) {
    printf("Size of char: %zu bytes\n", sizeof(char));
    printf("Size of signed char: %zu bytes\n", sizeof(signed char));
    printf("Size of unsigned char: %zu bytes\n", sizeof(unsigned char));
    printf("Size of short int: %zu bytes\n", sizeof(short int));
    printf("Size of unsigned short int: %zu bytes\n", sizeof(unsigned short int));
    printf("Size of int: %zu bytes\n", sizeof(int));
    printf("Size of unsigned int: %zu bytes\n", sizeof(unsigned int));
    printf("Size of signed long int: %zu bytes\n", sizeof(signed long int));
    printf("Size of unsigned long int: %zu bytes\n", sizeof(unsigned long int));
    printf("Size of float: %zu bytes\n", sizeof(float));

    return 0;
}
Kun ohjelma käännetään ja suoritetaan tässä tehtävässä käytettävällä tietokoneella, tulos on seuraava:
Size of char: 1 bytes
Size of signed char: 1 bytes
Size of unsigned char: 1 bytes
Size of short int: 2 bytes
Size of unsigned short int: 2 bytes
Size of int: 4 bytes
Size of unsigned int: 4 bytes
Size of signed long int: 8 bytes
Size of unsigned long int: 8 bytes
Size of float: 4 bytes
Jokainen alla oleva muuttuja voi saada minkä tahansa arvon annetun pienimmän ja suurimman arvon väliltä.
Esittele jokainen muuttuja käyttäen muuttujatyyppiä, joka vie mahdollisimman vähän muistia mutta pystyy silti esittämään koko annetun arvoalueen.
Muuttuja Pienin arvo Suurin arvo
a 'A' 'Z'
b 0 255
c -129 127
e -32769 32767
f -2147483649 2147483647
g -3.14 3.14
Tässä tehtävässä:
  • Älä käytä <stdint.h>-otsikkotiedoston tyyppejä, kuten int8_t, uint8_t, int16_t tai uint16_t.
  • Muista käyttää tarvittaessa sopivia avainsanoja: short, long, signed...
  • Kirjoita vain muuttujien esittelyt. Älä alusta muuttujia.
  • Kirjoita yksi esittely per rivi. Älä jätä tyhjiä rivejä tai ylimääräisiä välilyöntejä.
Esimerkiksi:
int a;
long int b;

Varoitus: Et ole kirjautunut sisään. Et voi vastata.

C-muuttujien mysteerit (0.25p)

Mitkä seuraavista väittämistä ovat totta? Sinulla on vain 5 vastausyritystä, joten harkitse vastauksiasi huolellisesti.
Varoitus: Et ole kirjautunut sisään. Et voi vastata.
?