我知道如何将二进制转换为十进制。我至少知道两种方法:表和幂;-)
我想将二进制转换为十进制并打印该十进制。而且,我对这个“小数”不感兴趣;我只想打印它。
但是,正如我上面所写,我只知道两种将二进制转换为十进制的方法,并且它们都需要加法。因此,我正在计算二进制 1 或 0 的某个值,并将其添加到记住的值中。这是一个薄弱的地方。我有一个非常非常大的数字(1 和 64 个零)。在转换时,我需要将一些中间结果放入一些“变量”中。在 C 中,我有一个“int”类型,它只有 4 个字节,不超过 10^11。
因此,在从二进制转换为十进制时,我没有足够的内存来存储中间结果。正如我上面所写,我对那个小数不感兴趣,我只想打印结果。但是,我没有看到任何其他方法来解决它;-( 有没有任何解决方案可以从二进制“仅打印”?
或者,也许我应该使用 BCD(二进制编码的十进制)之类的东西来进行中间表示?我真的不想使用这个,因为它不是那么跨平台(英特尔的处理器有一个内置功能,但对于其他功能,我需要编写自己的实现)。
我很高兴听到你的想法。感谢您的耐心等待。
语言:C.
我强烈建议使用诸如GMP http://gmplib.org/(GNU 多精度库)。您可以使用mpz_t
大整数的数据类型,各种导入/导出例程 http://gmplib.org/manual/Integer-Import-and-Export.html#Integer-Import-and-Export将您的数据放入mpz_t
,然后使用mpz_out_str() http://gmplib.org/manual/I_002fO-of-Integers.html#I_002fO-of-Integers以 10 为基数打印出来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)