【发布时间】:2011-11-22 19:56:05
【问题描述】:
我必须找到非常大的日志。
我在 C++ 中做到这一点
我已经做了一个乘、加、减、除的函数,但是对数有问题。我不需要代码,我需要一个简单的idea如何使用这些函数。
谢谢。
附: 抱歉,我忘了告诉你:我必须只找到那个数字的二进制对数
附注-2 我在Wikipedia找到:
int floorLog2(unsigned int n) {
if (n == 0)
return -1;
int pos = 0;
if (n >= (1 <<16)) { n >>= 16; pos += 16; }
if (n >= (1 << 8)) { n >>= 8; pos += 8; }
if (n >= (1 << 4)) { n >>= 4; pos += 4; }
if (n >= (1 << 2)) { n >>= 2; pos += 2; }
if (n >= (1 << 1)) { pos += 1; }
return pos;
}
如果我在大数字下重新制作它,它会正常工作吗?
【问题讨论】:
-
为什么不调用log函数呢?这是作业吗?
-
来自 100000000000000000000000000000 的通话记录功能?!这可能吗?
-
绝对。通过 1e300 即可顺利登录。
-
嗯...谢谢,但我会遇到问题,因为我的长数字存储在 char 数组中...如何以 1e300 形式传递函数?
-
不要将数字存储为文本。将它们转换为数字。在这种情况下,您要转换为
double。请不要告诉我你为char*写了加法和乘法例程!
标签: c++ logging logarithm arbitrary-precision