[Tech] numero di bit negli int
Franco Bagnoli
bagnoli@dma.unifi.it
Ven 28 Maggio 2004 19:05:27 CEST
On Fri, 28 May 2004, Valerio Montagnani wrote:
> Sono alla ricerca di un formato giusto per rappresentare dati audio. 16
> bit sono giusti, per cui ho pensato agli int. Tuttavia ho letto su
> internet che non tutte le macchine rappresentano gli interi con 16 bit.
>
> Vi chiederei la cortesia seguente: una macchina basata su un p4 intel
> lavora con int a 16 o a 32 bit? Nel caso usi i 32 bit devo dichiarare le
> variabili short int, per usarle a 16 bit?
la definizione di int, short, long, long long ecc. è stata fatta
intenzionalmente generica. Ovvero, nemmeno i char sono garantiti di essere
a 8 bit (c'erano delle macchine con i byte a 9 bit), anche se su questo
ci si può scommettere che non cambi più.
Questo vuol dire che se scrivi un programma che suppone una certa
dimensione in bit, sei certo che tra qualche tempo, quando ti sarai
dimenticato della questione, passerai il programma su un'altra macchina e
non funzionerà (un po' come il baco del 2000).
Quindi, o all'inizio del programma controlli quanto sono "larghi' i dati
(con un sizeof, che puoi usare anche per scoprire quanti bit ci sono in un
tipo:
#include <stdio.h>
#define dimmi(type) printf("il tipo " #type " contiene %d bits\n",
8*sizeof(type))
main() {
dimmi(int);
dimmi(char);
}
)
oppure, meglio, usi la "libreria" stdint.h che contiene le definizioni di
tipo appropriate:
uint16_t, uint8_t ecc. ecc.
--
Franco Bagnoli (franchino) <bagnoli@dma.unifi.it>
virtual location: Dipartimento di Energetica "S. Stecco"
ultra-virtual affiliation: Centro Dinamiche Complesse (CSDC-Firenze)
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787
Maggiori informazioni sulla lista
flug-tech