首先,这是我的一部分。其次,这只是其中的一部分,所以我非常感谢这里的任何提示。
我实现了一种BigInt类,它将数字存储为零和1的序列 - 将十进制存储为二进制。
我的班级可以添加数字并将它们相乘。
好的,但是当我乘以两个大数字时,我得到了一个巨大的数字。
我的问题是 - 给定一个非常长的二进制数,如何将其转换回十进制数?
我发现了一些关于除以10的东西,但我不确定,如果那是我的情况......或者它是,我必须实施二元分割?
...谢谢
答案 0 :(得分:1)
二进制表示基础2
所以,如果您有10100
,并且需要基础10
,则可以应用以下模式,从最后一个元素到第一个元素(从右到右)左):2^0*0 + 2^1*0 + 2^2*1 + 2^3*0 + 2^4*1 = 20
你只需从a
到0
从length_of_binary_num-1
加注2,然后将该功率乘以字符串中的二进制数字(从右到左)或者你有
我也建议使用二进制字符串,因为二进制数字往往看起来更像字符串而不是整数