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
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
- Agafeu un nombre binari com a entrada.
- Divideix el nombre per 10 i emmagatzema la resta en rem variable.
- 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. - Dividiu el quocient del nombre original per 10.
- Multiplica la base per 2.
- 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