fn shift_amount(b: &BigInt) -> Option<i64>
BigInt のシフト量を i64 に変換する。f64 経由で安全範囲(|n| < 2^31)に収まるもののみ Some。 過大なシフトは現実的なメモリ上限を超えるため None を返して呼び出し側でエラーにする。