首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么能够转换3000位的二进制数成十进制数?不要骂小弟我无聊,教小弟我怎样处理大数有关问题 T_T

2012-04-05 
如何能够转换3000位的二进制数成十进制数?不要骂我无聊,教我怎样处理大数问题 T_T有一个存有3000位二进制

如何能够转换3000位的二进制数成十进制数?不要骂我无聊,教我怎样处理大数问题 T_T
有一个存有3000位二进制的文件,怎样将它转换成十进制数,精确转换;
以下是生成好的3000个二进制,麻烦了:(不要骂我傻,要是以后我碰到这类问题怎么办!)
100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010100101001010010


[解决办法]
用数组,那就不是把一长串2进制直接转连续的10进制,或不是把一串10进制直接转为一串连续的2进制.

比如算:111122223333444455556666*99998888777766665555
那么可以对数字从后面往前按相同长度分节.
比如111122223333444455556666分成1111,2222,3333,4444,5555,6666
然后定义一个int X[10]={6666,5555,4444,3333,2222,1111}
int Y[10]={9999,8888,7777,6666,5555}
再定义一个存放积的结果int Z[20]={0};

现在就可以在32位系统上计算了:


X[0]*Y[0]如果小于10的4次方,直接加在Z[0]上,如果大于10的4次方则取模,余数加到Z[0]上,除去余数剩下的数加在Z[1]上.
X[0]*Y[1]
X[0]*Y[2]
....
X[1]*Y[0]
X[1]*Y[1]
X[1]*Y[2]
.....
总之就象在做一个小学的竖式乘法一样.

最后将Z数组里的数字转为字串,连接在一起,就是结果了.
整个数法的关键是计算好进位.


热点排行