2016-10-16 80 views
0

假設,我有一個二進制數字存儲在一個數組或字符串和等效的十進制數字。超過甚至無符號long long int的範圍。在這種情況下我該怎麼辦?我正在使用C++如何將非常大的二進制數轉換爲小數?

+0

1.選擇你的毒藥(語言)2.告訴我你打算如何存儲非常大的數字。 3.也許想想爲什麼你需要這樣做 - 可能更容易的方法/設計是可用的 –

+0

@ EdHeal,你會怎麼做?順便說一句,Iam使用C++ –

+0

什麼是編程語言? –

回答

0

如果使用c#,它的BigInteger位於System.Numerics

不幸的是,你應該得到有用的庫(Big Integer Library), 或類似下面的代碼

class BigInt 
{ 
public: 
    enum IntType{Binary, Decimal }; 
    explicit BigInt(string number); 
    std::string GetBinary(); 
    std::string GetDecimal(); 

private: 
    std::string m_number;//you should store number as string, so you don't need care maximum number. 
    IntType m_type; 
}; 
1

通過實現它自己所提到的在我的意見 - 使用bitset的。這裏有一個例子:

#include <iostream> 
#include <bitset> 

using namespace std; 

typedef bitset<200> mybitset; // Or some other number 

mybitset convert(const char *s) 
{ 
    mybitset result; 
    for (int loop = 0; s[loop]; ++loop) { 
     if (s[loop] == '1') result[loop] = true; 
    } 
    return result; 
} 

int main() { 
    mybitset num_1 = convert( "100101011101010100001"); 
    mybitset num_2 = convert("110010100001001010100011"); 

    mybitset result = num_1 & num_2; 

    cout << num_1.to_string() << endl; 
    cout << num_2.to_string() << endl; 
    cout << result.to_string() << endl; 

    // your code goes here 
    return 0; 
} 

或者ideone

相關問題