2015-09-14 7 views
-4

Я хотел бы преобразовать целую последовательность в десятичную. Я знаю процедуру, но как я могу поместить все целые числа в один двоичный номер?Как преобразовать двоичный в десятичный в C

Выход должен быть таким:

Enter first binary digit: 0 
Enter second binary digit: 0 
Enter third binary digit: 0 
Enter fourth binary digit: 0 
0000 = 0 

Ниже показано, как я написал эту задачу:

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h> 
#include<conio.h> 

int main(void) 
    { 
     int a[100]; 
     int n, dec = 0; int power(int, int); 

     long int binaryNumber, decimalNumber = 0, j = 1, remainder; 

     printf("Enter first binary number: "); 
     scanf("%ld", &a[1]); 
     printf("Enter second binary number: "); 
     scanf("%ld", &a[2]); 
     printf("Enter third binary number: "); 
     scanf("%ld", &a[3]); 
     printf("Enter fourth binary number: "); 
     scanf("%ld", &a[4]); 

     for (int i = 0;i<n;i++) 
     { 
      scanf("%d", &a[i]); 
     } 

     for (int i = (n - 1);i >= 0;i--) 
     { 
      dec = (a[i] * power(2, j)) + dec; 
      j++; 
     } 
     printf("binary number of decimal is %d", dec); 

     return 0; 
    } 
+0

Привет Luia Moly и добро пожаловать на StackOverflow, возможно, этот вопрос может помочь вам: HTTP: //stackoverflow.com/questions/12338584/binary-to-decimal-in-c – vdolez

+0

Вы имеете в виду '(a - '0') * 1000 + (b - '0') * 100 + (c - '0') * 10 + (d - '0') * 1'? –

+1

Основная ошибка в программе заключается в том, что 'n' используется неинициализированным. У компилятора, скорее всего, есть возможность предупредить о таких ошибках. – Armali

ответ

3

Ну, это простая математика. Первая двоичная цифра составляет 2^0, то второй 2^1, то третий 2^2, ...

number = first * 1 + second * 2 + third * 4 + forth * 8; 
-1
//binary to decimal converter 
long int bin2dec(long int binary_number,int i){ 
if(binary_number == 0) 
    return 0; 
else 
    return ((binary_number%10)*pow(2,i) + bin2dec(binary_number/10,++i)); 
} 
+0

не используют 'pow' для целых вычислений, используйте shift. –

Смежные вопросы