Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    64 o 32 bit ?!?

    Ragazzi, io ho la seguente macchina:

    AMD Turion(tm) 64 Mobile

    che dovrebbe essere dal nome a 64 bit.

    Per sfizio ho fatto il seguente programma in c:

    main()

    printf("Un long occupa %d ed un int %d",sizeof(long),sizeof(int));

    e, mi è venuto fuori questo output:
    Un long occupa 4 ed un int 4 .

    Ma se è vero che è a 64 bit un long non dovrebbe occupare 8 byte ?!? Non so proprio che pensare, il compilatore non sbaglia questo è certo.

    Qualcuno sa dirmi qualcosa di più in proposito ?!?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma tu hai installato un sistema operativo a 32 o 64 bit?

  3. #3
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    Fedora core 5.0
    Credo sia quella a 32

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: 64 o 32 bit ?!?

    Originariamente inviato da giudf
    Ragazzi, io ho la seguente macchina:

    AMD Turion(tm) 64 Mobile

    che dovrebbe essere dal nome a 64 bit.

    Per sfizio ho fatto il seguente programma in c:

    main()

    printf("Un long occupa %d ed un int %d",sizeof(long),sizeof(int));

    e, mi è venuto fuori questo output:
    Un long occupa 4 ed un int 4 .

    Ma se è vero che è a 64 bit un long non dovrebbe occupare 8 byte ?!? Non so proprio che pensare, il compilatore non sbaglia questo è certo.

    Qualcuno sa dirmi qualcosa di più in proposito ?!?
    Per prima cosa dovresti dirci se il tuo sistema operativo è a 32 o 64 bit (e dirci quale compilatore stai usando).

    Come seconda cosa, se vuoi conoscere meglio i dettagli del "64 bit", leggi: http://en.wikipedia.org/wiki/64-bit

    Poi sappi che conoscere la dimensione del long non permettere di avere l'indicazione sul 32 o 64 bit dell'architettura in modo esatto. Dipende dal modello dei dati scelto da chi ha sviluppato il sistema operativo!!! Ad esempio la Microsoft ha deciso di adottare il modello LLP64 per i suoi sistemi operativi a 64 bit. Con questo modello, il long continua ad essere di 32 bit (4 byte)!!!
    Hanno fatto questa scelta, presumo, per non "rompere" troppo codice e strutture esistenti.

    Potresti fare di meglio, testando invece la dimensione di un puntatore, quindi ad esempio sizeof (char*). In una architettura a 64 bit i puntatori sono indubbiamente a 64 bit!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da giudf
    Fedora core 5.0
    Credo sia quella a 32
    Quindi ...

  6. #6
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    sizeof(char *) = 4 ?!?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il puntatore e' a 32 bit ... quindi il sistema operativo e' a 32 bit ed e' tutto normale.

    Per disporre dei 64 bit devi usare un sistema operativo a 64 bit (con relativo sistema di sviluppo).

  8. #8
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    Ti ringrazio, all'università il professore mi aveva infilato nella testa che la grandezza di un valore in C dipendeva esclusivamente dall'architettura della macchina e non dal sistema operativo. Ora so che si sbagliava (e non è la prima volta che mi dice una cosa per un altra) facendomi perdere giorni e giorni !!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.