0
假設,我有一個二進制數字存儲在一個數組或字符串和等效的十進制數字。超過甚至無符號long long int的範圍。在這種情況下我該怎麼辦?我正在使用C++如何將非常大的二進制數轉換爲小數?
假設,我有一個二進制數字存儲在一個數組或字符串和等效的十進制數字。超過甚至無符號long long int的範圍。在這種情況下我該怎麼辦?我正在使用C++如何將非常大的二進制數轉換爲小數?
如果使用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;
};
通過實現它自己所提到的在我的意見 - 使用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
1.選擇你的毒藥(語言)2.告訴我你打算如何存儲非常大的數字。 3.也許想想爲什麼你需要這樣做 - 可能更容易的方法/設計是可用的 –
@ EdHeal,你會怎麼做?順便說一句,Iam使用C++ –
什麼是編程語言? –