私はこの質問に答える必要のある仕事を学校で持っています:制限されたRAMデバイス(あらゆる言語)でINTオーバーフローを処理する方法は?
"2人の生徒が1月1日から0日までの日数多くの小さなコンピュータでは、Intの最大値は32767です。これを無視するとどうなりますか?この問題をどのように解決できますか?
質問の種類がわかりません。私は現在Pythonで作業していますが、PythonはIntをLongに変換してIntオーバーフローを自動的に処理します。他のプログラミング言語は同様の処理を行います(たとえば、負の数に折り返す、AKA 32768は-32767になります)。プログラミング言語が自動的にオーバーフローを処理しなかった場合、数値が32767を超えるとエラーが発生すると思います...そうですか?
"絶対日数"(32767以上で、Intのみを使用できると仮定して)を印刷したい場合は、値をIntに格納することができないため、できません。それは不可能だろう。今日の日付を印刷したいのであれば、PC BIOSから取り出すか、代わりにUnixの時間を使うだけです。
私にとっては、この質問に対する答えは、プログラムが何をしたいのかによって決まるようです。しかし、私の先生はいいえと言います。彼は私の答えのどれも正しいとは言わない。私は彼がどんな答えを望んでいるのか正確には分かりません。私は約2ヶ月しかプログラミングをやっていないので、これは簡単な質問です。私は何が欠けているのですか?私はこれを熟考していますか?
'変数> 32768:raise OverflowError'? – MaxLunar
* unsigned int *、 'uint32_t'、' uint64_t'、 'int32_t'、または' int64_t'のようなより大きな容量の変数を使用してください。アセンブリ言語では、加算または乗算後にキャリービットまたはオーバーフロービットをテストできます。 –
もう一つの方法は、複合整数を作るのにそれ以上の 'int'を使うことです。 –