私は最近、指数を計算できる単純な電卓をC++で作ったが、2^31までしか動かない。ここで が問題であり、私の入力/出力は次のとおりです。(C++)2^32 = 0しかし2^31 * 2の仕事
基本的にI: 2^31
O: 131072
I: 2^32
O: 0
I: 13107*2
O: 262144
それが2^32を行うことはできませんが、それは(2^31)を行うことができます* 2、私はちょうどその理由を理解することはできません。もし誰かが私を助けて、なぜ私が本当にそれを感謝するのか説明することができます。指数を計算するコードは次のとおりです。
long exp(long x, int y) {
int p;
if (y % 2 == 0) {
p = 1;
}
else {
p = x;
}
while (y > 1) {
x *= x;
y /= 2;
}
return x*p;
}
2^31の回答は間違っています。 – user2357112
私のC++のスキルには、パワーオペレータはありません。 http://stackoverflow.com/questions/4843304/why-is-my-power-operator-not-working –
かなりクール、右ですか?キーは、コンピュータ上の数字の表現を理解することにあります。この動作はデフォルトでは有限であり、常に表すことのできない数値が存在します。任意の大きな数値を使用するのに役立つライブラリがありますが、通常はほとんどの言語でデフォルトの動作ではありません。確かにC++のために決してない。 –