0

Turbo C++ IDE で、ハードコードされた値 65536 の整数変数の出力が 0 であり、その値 (65536) より小さい値が負の整数であり、その値 (65536) より大きい値が正の整数であるのはなぜですか?

ハードコードされた 65536 の値で整数を初期化して出力すると、0 が出力され、その整数変数の値を 65536 から 65535 または 65534 のようにそれ以下に変更すると、-1、-2 などが出力されます。 .. その整数変数の値を 65536 から 65537 以上に変更すると、1、2、3 などと表示されますが、なぜこのようなことが起こっているのでしょうか? Turbo C++ IDE で確認しました。

私は初心者なので、ロジックとその背後にある作業を明確に説明してください。

4

3 に答える 3

7

古代の Turbo C++ は 16 ビットを使用していintました。

于 2012-12-09T19:34:59.730 に答える
4

16 ビットの符号付き値 (-32768 ~ 32767) について話しているようです。これは、左端のビットを符号として扱うことを意味します。

65535 (1111 1111 1111 1111) を入力すると、左端のビットが 1 であるため、負の値として扱われます。他のビット (すべて 1) は最大の負の値であり、「-1」に等しくなります。左端のビットが 0 になるまで負のままです。32767 になります。

65536 (0001 0000 0000 0000 0000) を入力すると、すべてゼロである最後の 16 ビットがカットされ、この値は「0」になります。

65538 (0001 0000 0000 0000 0010) - 再び最後の 16 ビットをカットし、'2' を取得します

注: 一般的に言えば、型の範囲外の値を保存してはなりません。16 ビット整数 (-32768 から 32767) しか格納できない場合は、そこに 65535 を入れてはいけません。

于 2012-12-09T19:45:25.963 に答える
0

整数の制限を超えると、数値のローテーションが発生すると思います。したがって、65536 に達すると、再び正の数が開始され、より大きな値になります。

元の制限は -32768 ~ 32767 です。32768 に行くと、実際には -32768 に達しています。したがって、65536 に達すると、0 になり、正の数が最初からやり直されます。

于 2012-12-09T20:01:22.260 に答える