本文共 762 字,大约阅读时间需要 2 分钟。
“玩”算法,对各种类型的“数”能表达的数据范围要心里有数。
什么叫心里有数?32 位整数最大能表示大概 42 亿多一点,如果算法要表示某地的人口数,设计数据模型时用 32 位整数也就够了,但是要表示全球人数就不行了。一光年大约 9,460,730,472,580,800 米,从地球到仙女座星系的距离是 254 万光年,已经超出了 64 位整数能表达的范围。我们在设计数据结构的时候,要对问题的规模做到心中有“数”,不要用错数据类型。
超过 64 位的超级大数怎么办?如果你要解决的问题需要这么大范围的数,可以考虑使用大整数。Python、Lisp 等语言都内建了大数计算机制,Java 也有 BigInteger 和 BigDecimal 分别用于大整数和大实数的计算。然而,C/C++ 没有内建的机制或类型支持大数计算,但是 C/C++ 有很多高性能的第三方大数库可供选择。
GMP 开源大数库是一个任意精度的大整数运算库,它包括了任意精度的整数、浮点数的各种基本运算操作。它是一个 C 语言的库
转载地址:http://hdcgj.baihongyu.com/