- 216 名前:212 mailto:sage [2006/04/15(土) 00:33:08 ]
- >>213
integer が符号付き32ビットだったとすると、範囲は -2^31..2^31-1 つまり、-2147483648..2147483647。 フィボナッチ数列を計算してみると、 Fibonacci(45) = 1134903170 Fibonacci(46) = 1836311903 Fibonacci(47) = 2971215073 ←ここで32ビット版integerの範囲を超える Fibonacci(48) = 4807526976 になるみたいなので、Fibonacci(47) 以降は値がおかしくなると思われ。 二進数で書くと、 . ↓このビットが1になると32ビット版 integer ではマイナスの値 Fibonacci(47) = 10110001000110010010010011100001 絶対値は (100000000000000000000000000000000 - 10110001000110010010010011100001) = (11111111111111111111111111111111 - 10110001000110010010010011100001) + 1 = 01001110111001101101101100011110 + 1 十進数に直すと |Fibonacci(47)| = 1323752222 + 1 = 1323752223 ←これにマイナスがついた値になってしまう www.edm2.com/0409/introc2.html の Conclusion の手前に同じようなことが書いてある。(Cの例だけど)
|

|