Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [c] rappresentazione binaria(s,e,m) di un float

    Salve ho bisogno di una mano per l'esercizio seguente: Scrivere una function c per visualizzare la rappresentazione binaria (s,e,m) di un numero float.Verificare che il dato inziale conincida con il dato iniziale..
    ho provato a risolverlo ma nn funziona ecco il codice
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #define len 32
    void sem(float,float[]);
    void bit(float,float[]);
    int main(){
      float n;
      float bin[len];
      printf("Dammi n \n");
      scanf("%f",&n);
      sem(n,bin);
      system("PAUSE");
      return 0;
    }
    
    void sem(float n,float bin[len]){
      int i;   
      printf("Segno %f\n",bit[31]);
      printf("esponente\n");
      for(i=23,i<31;i++)
        printf("%f",bit[i]);
      printf("\nMantissa\n");
      for(i=0;i<23;i++)
        printf("%f",bit[i]);
    }     
      
    void bit(float n,float bit[len]){
      int j;
      j=len-1;
      do{bit[j]=n&1;
         --j;
         n=n>>1;
         }while(n!=0&&j>=0);
      if(j>0)
      {do{bit[j]=0;
          --j;
          }while(j>=0);
      }
    for(j=0;j<len;++j)
    printf("%d",bit[j]);
    }
    non mi funziona perchè gli operatori bitwise nn si possono utilizzare con i float..

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Devi ricorrere ad una union che abbia come campi un float ed un intero a 32 bit. A quel punto lavori con gli operatori bitwise sul campo intero estraendone i singoli bit (operazione legittima), e automaticamente ottieni la rappresentazione in memoria del numero floating point corrispondente.
    every day above ground is a good one

  3. #3
    non è che mi puòi fare un esempio perchè non so usa molto bene le union
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Ti posso fare un esempio di utilizzo delle union, ma per l'esercizio devi provvedere tu perché in generale qui si tende a non fare il lavoro al posto degli altri... innanzitutto perché sarebbe controproducente, e poi perché non è detto che gli utenti abbiano tempo e/o voglia per farlo :)

    codice:
    #include <stdio.h>
    
    typedef union float_int {
    	float float_value;
    	long int int_value;
    } Float_Int;
    
    int main(void)
    {
    	Float_Int my_union;
    
    	printf("Immetti un numero intero: ");
    	while (scanf("%ld", &(my_union.int_value)) != 1) {
    		while (getchar() != '\n');
    	}
    
    	printf("Il numero floating point corrispondente è: %e\n", my_union.float_value);
    
    	return 0;
    }
    in sostanza int_value e float_value condividono la stessa memoria, quindi hanno la stessa rappresentazione binaria. Sfrutta questo fatto...
    every day above ground is a good one

  5. #5
    non volevo assolutamente far fare il mio lavoro ad un altro volevo solo un esempio per chiarirmi l'utilizzo grazie dell'esempio ora provo a farlo

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da whiterich86
    non volevo assolutamente far fare il mio lavoro ad un altro volevo solo un esempio per chiarirmi l'utilizzo
    Senza offesa ovviamente; lo specificavo solo perché a volte arrivano a chiedere anche questo... e nemmeno sempre in maniera civile e corretta :)

    Originariamente inviato da whiterich86
    grazie dell'esempio ora provo a farlo
    Prego e buono studio...
    every day above ground is a good one

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.