Newsgroup: it.comp.lang.c
Titolo: conversione binario decimale

Salve a tutti guru del c.
vorrei sapere una procedura semplice per convertire numeri binari in
decimali.
Grazie a presto

Seby,hai resente le posizioni che hanno numeri quando le scrivi?per esempio:
412,ecco il 4 sta per le centinai,l'1 sta per le decine,e il 2 per le unità...
ecco nei binari più o meno funziona così!!!intendo riguardanti le posizioni!!!
metti i numeri 0110,tu devi mettere in valore esponenziale le unità le decine 
eccetera in questa maniera:
           unità--->  sarebbe 2 all'esponente 0 e verrebbe 1,ma siccome 
                      il numero delle unità è 0,non si conta!!!
           decine-->  sarebbe 2 all'esponente 1 e verrebbe 2,e siccome
                      il numero delle decine è 1,si conta
           centinai->  sarebbe 2 all'esponente 2 e verrebe 4,e siccome
                       il numero delle centinai è 1,si conta
            e così via!!!
e in fine sommi il risultato,nel nostro caso è 6!!!!
se non hai ancora capito basta che me lo dici che t lo spiego in un'altra 
maniera,oppure se hai capito prova a fare questi esercizi:
0101
1010
0010
1101
0011
magari se vuoi controllare se sono giusti basta che scrivi!!!
ciao da NephilimDie
 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

una domanda seby,te lo vuoi sapere in c o come si fa normalmente???


decimali.
<CODE>
#include <stdio.h>
#include <string.h>
int bin2dec(const char *s)
{
    int i, len = strlen(s), result = 0;
    for (i = 0; i < len; i++)
    {
        result += (s[len-i-1]-'0') * (1 << i);
    }
    return result;
}
int main()
{
    printf("%d", bin2dec("01101100"));
    getchar();
    return 0;
}
</CODE>
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
Spostare "Windows" nel cestino ?

decimali.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int is01(char c)
{return (c=='0' || c=='1')? 1 : 0;}
int bin_dec(const char s[])
{int i=0, n=0, r=0;
 while( isspace(s[i]) ) i++;
 while(is01(s[i]))i++;
 for(i--;is01(s[i]);i--, n++)
   r+=(s[i]=='1') ? (1<<n) : 0;
 return r;
}
 main()
{char b[300];
 int c, ch;
do{printf("\nLista di numeri binari (1 termina)>");
   do{scanf("%s", &b);
      c=bin_dec(b);
      printf("\nPartenza=%s\n",b);
      printf("Arrivo  =%d\n",  c);
      if((ch=fgetc(stdin) )=='\n') break;
      else ungetc(ch,stdin);
      } while(ch!=EOF );
 }while(c!=1);
return 0;
}

>decimali.
#include <stdio.h>
#include <ctype.h>
int bin_dec(const char s[])
{int i=0, n=0, r=0, cont=0;
 while( isspace(s[i]) ) i++;
 while( s[i]=='0' || s[i]=='1' ) {i++; cont++;}
 for(i--; (cont--)>0 ;i--, n++)
     r += (s[i]=='1') ? (1<<n) : 0;
 return r;
}

decimali.
Non sono certo un c-guru, ma penso che questa semplice descrizione
possa esserti utile
Immagina di avere il numero binario da convertire sotto forma di
stringa terminata (quindi ad es. "11010001" terminato da '\0' )
per semplicità immagina che tale stringa sia già stata controllata,
per cui contiene sicuramente zeri e uni consecutivi, ovvero le uniche
cifre ammesse in un numero binario.
Ne convertiamo il valore in int (quindi una variabile interna di tipo
intero) che poi potremo stampare come numero decimale usando lo
specificatore di formato "%d"
	// poniamo inizialmente il valore numerico da calcolare = 0
	x=0;
	// poniamo inizialmente l'indice stringa sul primo carattere
	i=0;
	// ricalcoliamo finché esistono cifre nel numero binario
	// ovvero finché non si incontra il terminatore, che vale 0
	while ( s[ i ] ) 
	{
		// ad ogni cifra aggiunta moltiplico per 2
		// la prima volta x=0 quindi è indifferente
		x *= 2;
		// leggo la cifra binaria puntata
		// e poi punto alla successiva
		if (s[i++] =='1') 
			 // se la cifra era un '1' aggiungo 1
			x+=1;
	} 
	// stampo il numero in formato decimale e vado a capo
	printf ( " x = %d \n " , x );
Allegri !
Claudio Chiani

 decimali.
   Se il tuo problema e` convertire una stringa che rappresenta un 
numero espresso in base due in un intero, allora la risposta sono le 
funzioni definite nello standard strtol(), strtod() e strtoul(). 
Altrmenti, specifica meglio.
-- 
Veri pirati noi siamo       Ma cosa c'e` di male?
Contro il sistema lottiamo  Ma cosa c'e` di strano?
Ci esercitiamo a scuola     Facciamo un gran casino
A far la faccia dura        Ma in fondo lavoriamo
Per fare piu` paura         Per capitan Uncino