2015-08-09 77 views
-2

需要做一个二进制到十进制程序,这是我最远的地方:如何创建二进制到十进制程序?

二进制101110应该代表十进制中的46。但这打印出来11.任何帮助表示赞赏。

我的代码:

#include <iostream> 
using namespace std; 

int binary_to_number(int binary_digits[], int number_of_digits) 
{ 
    int sum = 0; 
    int n = -1; 
    int i = 0; 

    for (i = number_of_digits - 1; i >= 0; i--){ 
      n++; 

      if (binary_digits[i] == 1) 
       sum = sum + (2^n); 
    } 
    return sum; 
} 

#ifndef WEBSUBMIT 
int main() 
{ 
    int binary_digits[6] = {1,0,1,1,1,0}; 
    cout << "" << binary_to_number(binary_digits, 6) << endl; 
} 
#endif //WEBSUBMIT 
+2

'^'操作符是*不是*指数运算符,它是XOR。试着想办法用左移运算符'<<'来代替。 –

+1

C++不是一种脚本语言,所以严格的答案是你不能。 – EJP

回答

0

在这里被返工的代码:

#include <iostream> 
using namespace std; 

int binary_to_number(int binary_digits[], int number_of_digits) 
{ 
    int sum = 0; 
    int i = 0; 
    int cnt = number_of_digits; 


    for (i = 0; i < number_of_digits; i++) { 
     cnt--; 

     if (binary_digits[i] == 1) 
      sum = sum + pow(2, cnt); 

    } 
    return sum; 
} 

#ifndef WEBSUBMIT 
int main() 
{ 
    int binary_digits[6] = { 1, 0, 1, 1, 1, 0 }; //46 
    cout << "" << binary_to_number(binary_digits, 6) << endl; 
    system("PAUSE"); 
} 
#endif //WEBSUBMIT 

binary_digits [0]为1个无0 binary_digits [0]是2^5

int binary_digits[6] = { 1, 0, 1, 1, 1, 0 }; 
+0

''包含''或''so'pow()'声明?好奇......这是OPs程序的直接音译/修复,但我不相信这是编写代码的好方法。 –

+0

pow包含在iostream中,因为iostream包括istream和istream,包括数学。 –