logo

Nombre binari a decimal en C

Aquesta secció tractarà la conversió de nombres binaris a nombres decimals. Abans d'anar al concepte, hem d'entendre els nombres binaris i els nombres decimals. Com sabem, l'ordinador no entén les paraules o els números que escriuen o fan els humans. En canvi, només entén els 0 i els 1. Per exemple, quan escrivim una paraula o un nombre en un ordinador, diversos programaris o compiladors ajuden a convertir aquests nombres o paraules en forma binària (bit 0 i 1). Perquè una màquina informàtica pugui entendre-les fàcilment.

punter al c
Nombre binari a decimal en C

Nombre binari

Un nombre binari és un nombre que representa informació o dades emmagatzemades en un ordinador amb una combinació de bits 0 i 1. També es coneix com el sistema numèric de base 2 perquè té dos bits, 0 i 1. Aquests són nombres binaris (0 i 1) 1001, 1010, 1101, 1111, 1010101, etc.

Nombre decimal

Un nombre decimal és un nombre que conté 10 dígits del 0 al 9. La seva base és 10 perquè recull 10 dígits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) i representa o fa el nombre sencer utilitzant aquestes deu xifres.

Algorisme per convertir binari a decimal

  1. Agafeu un nombre binari com a entrada.
  2. Divideix el nombre per 10 i emmagatzema la resta en rem variable.
  3. decimal_num = decimal_num + rem * base;
    Inicialment, el decimal_num és 0 i la base és 1, on la variable rem emmagatzema la resta del nombre.
  4. Dividiu el quocient del nombre original per 10.
  5. Multiplica la base per 2.
  6. Imprimeix el decimal del nombre binari.

Converteix un nombre binari en un nombre decimal utilitzant el bucle while

Considerem el programa C per convertir la combinació d'un nombre binari (0s i 1s) en el nombre decimal mitjançant un bucle while.

programa.c

 #include #include void main() { // declaration of variables int num, binary_num, decimal_num = 0, base = 1, rem; printf (' Enter a binary number with the combination of 0s and 1s 
'); scanf (' %d', &num); // accept the binary number (0s and 1s) binary_num = num; // assign the binary number to the binary_num variable while ( num > 0) { rem = num % 10; /* divide the binary number by 10 and store the remainder in rem variable. */ decimal_num = decimal_num + rem * base; num = num / 10; // divide the number with quotient base = base * 2; } printf ( ' The binary number is %d 	', binary_num); // print the binary number printf (' 
 The decimal number is %d 	', decimal_num); // print the decimal getch(); } 

Sortida

 Enter a binary number with the combination of 0s and 1s 1101 The binary number is 1101 The decimal number is 13 

Explicacions del codi: Com podem veure al programa anterior, demana als usuaris un nombre binari (0s i 1s) que emmagatzemi el número a la variable num. A cada iteració, un bucle while comprova la condició del nombre binari i valida que el nombre donat no ha de ser inferior a 0; en cas contrari, surt del bucle.

A continuació es mostra la iteració del bucle while, de la següent manera:

1a iteració:

rem = 1101 % 10 => 1

decimal_num = 0 + 1 * 1 => 1 (decimal_val = 0, rem = 1, & base = 1)

num = 1101/10 => 110

base = 1 * 2 => 2

2a iteració:

fer el bucle while java

rem = 110 % 10 => 0

decimal_num = 1 + 0 * 2 => 1 (decimal_val = 1, rem = 0, & base = 2)

núm = 110/10 => 11

java afegir a una matriu

base = 2 * 2 => 4

3a iteració:

rem = 11 % 10 => 1

decimal_num = 1 + 1 * 4 => 5 (decimal_val = 1, rem = 1, & base = 4)

num = 11/10 => 1

base = 4 * 2 => 8

4a iteració:

mapa_desordenat c++

rem = 1 % 10 => 1

decimal_num = 5 + 1 * 8 => 1 (decimal_val = 5, rem = 1, & base = 8)

num = 1/10 => 0

base = 8 * 2 => 16

Converteix el nombre binari en el nombre decimal utilitzant el bucle for

Considerem un programa en llenguatge C per convertir la combinació de nombres binaris (0s i 1s) al nombre decimal utilitzant el bucle for.

decimal.c

 #include #include #include // use math.h header file void main() { // declaration of local variables i, bin_num, decimal_num = 0, rem; int i, bin_num, decimal_num = 0, rem; printf (' Enter the binary number with the combination of 0s and 1s 
'); scanf ('%d', &bin_num); // takes the binary number as the input printf( ' 
 The binary number is %d', bin_num); // print the binary number for (i = 0; bin_num != 0; ++i) { rem = bin_num % 10; bin_num = bin_num / 10; decimal_num = decimal_num + (rem) * ( pow (2, i)); } // print the decimal number printf ('
 Conversion from binary to decimal number is %d', decimal_num); getch(); } 

Sortida

nombre aleatori entre 1 i 10
 Enter the binary number with the combination of 0s and 1s 10010 The binary number is 10010 Conversion from binary to decimal number is 18 

Converteix nombre binari en nombre decimal mitjançant la funció

Considerem un programa en llenguatge C per convertir la combinació de nombres binaris (0s i 1s) en nombre decimal mitjançant la funció definida per l'usuari.

doncs c

 #include #include int binaryTodecimal(int bin_num); int main() { // declare the local variable int bin_num, dec_num; printf (' Enter the binary number (0s and 1s) 
'); scanf ('%d', &bin_num); dec_num = binaryTodecimal (bin_num); // call the binaryTodecimal() function printf (' Conversion of the binary number to decimal number is %d', dec_num); } // use user defined function --- binaryTo decimal function int binaryTodecimal( int bin_num) { // declaration of variables int decimal_num = 0, temp = 0, rem; while (bin_num != 0) { rem = bin_num % 10; bin_num = bin_num / 10; decimal_num = decimal_num + rem * pow( 2, temp); temp++; } return decimal_num; } 

Sortida

 Enter the binary number (0s and 1s) 11001 Conversion of the binary number to decimal number is 25 

Converteix nombre binari en nombre decimal utilitzant matriu i funció

Considerem un programa en llenguatge C per convertir la combinació de nombres binaris (0s i 1s) en nombre decimal utilitzant la funció i la matriu.

Decimal2.c

 #include #include int binaryTodecimal (char num[]) { int i, deci_num, mul = 0; for ( deci_num = 0, i = str_length(num) - 1; i >= 0; --i, ++mul) { deci_num = deci_num + (num[i] - 48) * (1 << mul); } return deci_num; } int str_length( char str[]) { int i = 0; while (str[i] != '') i++; return i; } int main() { char num[] = '1101'; int deci_num; printf ('
 The binary number is %s', num); printf ('
 The decimal number of %s is %d', num, binaryTodecimal(num)); return 0; } 

Sortida

 The binary number is 1101 The decimal number of 1101 is 13