Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ricerca personalizzata

Programmare in C con Ubuntu 14.04 trusty DE Gnome

Moderatori: Foto UtenteMassimoB, Foto Utentexyz

0
voti

[41] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto Utentehuyol » 11 set 2016, 18:04

Con unsigned int, poiché non perdi il bit occupato dal segno, puoi sfruttare tutto l'intervallo di valori da 0 a 2^{32}-1 (che è diverso da 2^{32-1})

scusami...ma non ho capito quest'ultima spiegazione...
se con 16 bit posso sfruttare (senza segno) da 2^0 a 2^15....come mai con 32 bit non posso sfruttare da 2^0 a 2^31 bensì da 2^0 a 2^32 - 1?

scusa....una domanda fuori argomento...come fai a stampare sul post i numeri con esponente? c'è qualche tool grafico?
Ultima modifica di Foto Utentealev il 11 set 2016, 18:06, modificato 1 volta in totale.
Motivazione: Corretta quotatura
Avatar utente
Foto Utentehuyol
120 1 5
Frequentatore
Frequentatore
 
Messaggi: 198
Iscritto il: 30 gen 2011, 19:24

0
voti

[42] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto UtenteDanteCpp » 11 set 2016, 18:07

\LaTeX
Avatar utente
Foto UtenteDanteCpp
4.715 3 8 13
Master EY
Master EY
 
Messaggi: 1088
Iscritto il: 15 dic 2011, 18:51

0
voti

[43] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto Utentealev » 11 set 2016, 18:34

Foto Utentehuyol, lo 0 lo devi sempre considerare, quindi con un tipo dato a 32 bit senza segno, potresti andare da 1 (2^{0}) a 4294967296 (2^{32})...però perdi un valore che sarà occupato dallo 0, quindi ti fermi a 4294967295 (2^{32}-1)

Se, invece, hai un tipo dato a 32 bit con segno, allora è chiaro che il range di valori dovrà tenere conto dei numeri negativi e della presenza del segno oltre che dello 0; ne consegue che il range precedente (da 0 a 4294967295) dovrà essere spalmato anche sui numeri negativi, perciò andrai da -2147483648 (-2^{31}) a 2147483647 (2^{31}-1)

La posizione dello 0 la perdi sempre; se hai i numeri negativi, perderai anche un indice di esponente perché la quantità disponibile di posizioni deve coprire anche i numeri negativi

Non ho riletto tutte le risposte precedenti e può essere che mi sia sfuggito qualche errore in precedenza; questo però è corretto
Avatar utente
Foto Utentealev
4.160 2 8 12
free expert
 
Messaggi: 4207
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[44] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto Utentehuyol » 12 set 2016, 9:44

ciao a tutti,
in riferimento al mio post n.27 sarei curioso di sapere se ad es. lo spazio allocato in memoria dal tipo di dato short int (nel caso concreto 2 byte) rimarrebbe uguale se cambiassi compilatore...... cioè...se provassi il solito programma con altri compilatori, ci sarebbe la possibilità che il valore dello spazio allocato da short int sia ad es. 4 oppure 8 oppure x byte? O_/
Avatar utente
Foto Utentehuyol
120 1 5
Frequentatore
Frequentatore
 
Messaggi: 198
Iscritto il: 30 gen 2011, 19:24

0
voti

[45] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto Utentealev » 12 set 2016, 10:08

Francamente non mi sono mai posto il problema :-)

Ma essendo i compilatori per C dei "traduttori" verso il codice macchina e considerando la presenza dei puntatori, penso proprio che tot bytes rimangono tot :mrgreen:
Avatar utente
Foto Utentealev
4.160 2 8 12
free expert
 
Messaggi: 4207
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[46] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto Utentehuyol » 12 set 2016, 10:17

no, era una mia curiosità nata dalla lettura a pag.27 dei Fondamenti del linguaggio C di Byron S.Gottfried dei seguenti brani:

.....lo spazio occupato in memoria determina l'intervallo dei valori che potranno essere assegnati ai vari tipi di dati (la memoria occupata da ogni tipo di dati può variare da un compilatore C all'altro..........L?interpretazione dei tipi di dati interi con qualificatori può variare da un compilatore all'altro, anche se ci sono sempre delle relazioni ovvie.
Avatar utente
Foto Utentehuyol
120 1 5
Frequentatore
Frequentatore
 
Messaggi: 198
Iscritto il: 30 gen 2011, 19:24

0
voti

[47] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto Utentealev » 12 set 2016, 10:29

Ho trovato la versione in lingua originale di quel libro
ftp://ftp.heanet.ie/disk1/sourceforge/c ... tfried.pdf

Però mi pare che il contesto della frase sia la definzione delle costanti

2.4 CONSTANTS
There are four basic types of constants in C. They are integer constants,floating-pointconstants, character
constants and string constants (there are also enumeration constants, which are discussed in Sec. 14.1).
Moreover, there are several different kinds of integer and floating-point constants, as discussed below.
Integer and floating-point constants represent numbers. They are often referred to collectively as
numeric-type constants. The following rules apply to all numeric-type constants.
1. Commas and blank spaces cannot be included within the constant.
2. The constant can be preceded by a minus (-) sign if desired. (Actually the minus sign is an operator that
changes the sign of a positive constant, though it can be thought of as a part of the constant itself.)
3. The value of a constant cannot exceed specified minimum and maximum bounds. For each type of
constant, these bounds will vary from one C compiler to another.
Avatar utente
Foto Utentealev
4.160 2 8 12
free expert
 
Messaggi: 4207
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

1
voti

[48] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto UtenteDanteCpp » 12 set 2016, 10:37

Più che da un compilatore all'altro, può cambiare da un calcolatore all'altro. Cosa che poi si rispecchia anche nell'implementazione del linguaggio in tal macchina, quindi nel compilatore.
Ad esempio pensa di essere su un micro a 8 bit, short int probabilmente sarebbe di 1 byte. E int avrebbe poco senso di esistere. Ecco perché nei uC si usa spesso il char pera rappresentare interi.

Puoi vedere dettagli sull'implementazione nel file limits.h.
Avatar utente
Foto UtenteDanteCpp
4.715 3 8 13
Master EY
Master EY
 
Messaggi: 1088
Iscritto il: 15 dic 2011, 18:51

0
voti

[49] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto Utentehuyol » 12 set 2016, 10:51

2.4 CONSTANTS
There are four basic types of constants in C. They are integer constants,floating-pointconstants, character
constants and string constants (there are also enumeration constants, which are discussed in Sec. 14.1).
Moreover, there are several different kinds of integer and floating-point constants, as discussed below.
Integer and floating-point constants represent numbers. They are often referred to collectively as
numeric-type constants. The following rules apply to all numeric-type constants.
1. Commas and blank spaces cannot be included within the constant.
2. The constant can be preceded by a minus (-) sign if desired. (Actually the minus sign is an operator that
changes the sign of a positive constant, though it can be thought of as a part of the constant itself.)
3. The value of a constant cannot exceed specified minimum and maximum bounds. For each type of
constant, these bounds will vary from one C compiler to another.

no....i periodi da me estrapolati sono presenti a pag.27 PAR. 2.3 TIPI DI DATI
Ultima modifica di Foto Utentealev il 12 set 2016, 10:53, modificato 1 volta in totale.
Motivazione: Corretta quotatura
Avatar utente
Foto Utentehuyol
120 1 5
Frequentatore
Frequentatore
 
Messaggi: 198
Iscritto il: 30 gen 2011, 19:24

0
voti

[50] Re: Programmare in C con Ubuntu 14.04 trusty DE Gnome

Messaggioda Foto Utentealev » 12 set 2016, 11:03

Ok, la frase citata da te è questa
2.3 DATA TYPES
C supports several different types of data, each of which may be represented differently within the computer’s memory. The basic data types are listed below. Typical memory requirements are also given. (The memory requirements for each data type will determine the permissible range of values for that data type. Note that the memory requirements for each data type may vary from one C compiler to another.)


Ma, dopo, chiarisce anche la questione con un esempio
C compilers written for personal computers or small minicomputers (i.e., computers whose natural word size is less than 32 bits) generally represent a word as 4 bytes (32 bits).


In ogni caso, Foto UtenteDanteCpp aveva già chiarito benissimo la questione che, in soldoni, equivale a dire che, compilando con Linux su piattaforma x64 (ad esempio), i bytes richiesti sono sempre gli stessi a prescindere dal compilatore

EDIT: attenzione a quando rispondi ad usare il tag
Codice: Seleziona tutto
[quote][/quote]
anzichè
Codice: Seleziona tutto
[code][/code]
Avatar utente
Foto Utentealev
4.160 2 8 12
free expert
 
Messaggi: 4207
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

PrecedenteProssimo

Torna a Linux

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite