質問編集履歴
3
一言
title
CHANGED
File without changes
|
body
CHANGED
@@ -103,4 +103,18 @@
|
|
103
103
|
すると i = 63 で 0 に戻っていました。(= オーバーフローを起こしている)
|
104
104
|
|
105
105
|
追記:
|
106
|
-
できれば**外部ライブラリに頼ることなく**、(xのn乗) を表現できたらなぁ...と思っているのですが...
|
106
|
+
できれば**外部ライブラリに頼ることなく**、(xのn乗) を表現できたらなぁ...と思っているのですが...
|
107
|
+
|
108
|
+
|
109
|
+
--------------
|
110
|
+
|
111
|
+
[追記2]
|
112
|
+
|
113
|
+
皆様、ご回答ありがとうございます。
|
114
|
+
どの回答をBAにするか悩みましたが、Amazing_GraceさんのをBAとさせて頂きます。
|
115
|
+
(できれば他の方々にもBAにしたいのですが...)
|
116
|
+
|
117
|
+
ちょっと今回の問題は私にはハードルが高かったかもしれません。(回答を読むと、私の苦手な範囲が使われていたりして...)
|
118
|
+
もうちょっと調べてから再挑戦することにします。
|
119
|
+
|
120
|
+
ありがとうございました。
|
2
修正し忘れ
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
C言語(もしくはC++)でlong longを超える値を扱う場合、どのようにすべきでしょうか。
|
7
7
|
|
8
|
-
例えば x
|
8
|
+
例えば (xのn乗)を計算する Test::factorial関数があるとして、これの型をどうするかです。
|
9
9
|
|
10
10
|
ある処理(例えば暗号等)をするライブラリを組んでいて、データ列(std::stringやstd::vector etc.)
|
11
11
|
の長さを指定したい時があります。
|
1
x^n を (xのn乗)と書き換えた
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
※ 私はあまり数学は得意ではないです...
|
2
2
|
|
3
|
+
|
3
4
|
CやC++でやっています。(主にBetterCというやつです)
|
4
5
|
|
5
6
|
C言語(もしくはC++)でlong longを超える値を扱う場合、どのようにすべきでしょうか。
|
@@ -8,7 +9,7 @@
|
|
8
9
|
|
9
10
|
ある処理(例えば暗号等)をするライブラリを組んでいて、データ列(std::stringやstd::vector etc.)
|
10
11
|
の長さを指定したい時があります。
|
11
|
-
例えば暗号であれば「平文の長さは1~(2
|
12
|
+
例えば暗号であれば「平文の長さは1~(2の64乗)とする」等のような場合で
|
12
13
|
Cipherクラスがあるとして Cipher::maxPlainTextLength() で(要求する平文の)最大の長さを返したい...とかです。
|
13
14
|
|
14
15
|
その場合、私のイメージでは
|
@@ -38,8 +39,8 @@
|
|
38
39
|
Test::TYPE tmp = 1;
|
39
40
|
/*
|
40
41
|
計算式:
|
41
|
-
2
|
42
|
+
(2の3乗) = 2 * 2 * 2 = 8
|
42
|
-
2
|
43
|
+
(2の64乗) = 2 * 2 * 2 ... = 18446744073709551616
|
43
44
|
*/
|
44
45
|
for( int i = 0; i < (int)n; i++ ){
|
45
46
|
tmp *= x;
|
@@ -83,7 +84,7 @@
|
|
83
84
|
```
|
84
85
|
思いつく型すべて試してみました。(charとかは別...)
|
85
86
|
|
86
|
-
それでもだいぶマシなものでも 2
|
87
|
+
それでもだいぶマシなものでも (2の64乗) の計算では i = 61 までしか表現できそうにもありません...
|
87
88
|
|
88
89
|
やはり自分でクラスなりを作るべきでしょうか。
|
89
90
|
|
@@ -102,4 +103,4 @@
|
|
102
103
|
すると i = 63 で 0 に戻っていました。(= オーバーフローを起こしている)
|
103
104
|
|
104
105
|
追記:
|
105
|
-
できれば**外部ライブラリに頼ることなく**、x
|
106
|
+
できれば**外部ライブラリに頼ることなく**、(xのn乗) を表現できたらなぁ...と思っているのですが...
|