Pascalの宿題は俺にやらせろ!!Part2
at TECH
216:212
06/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 ←これにマイナスがついた値になってしまう
URLリンク(www.edm2.com)
の Conclusion の手前に同じようなことが書いてある。(Cの例だけど)
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5402日前に更新/294 KB
担当:undef