0

したがって、私が正しく理解していれば、整数はバイトのコレクションであり、基数 2 形式で数値を表します。

したがって、unsigned int test=0 の場合、実際にはすべてゼロのビット フィールドで構成される必要があります。でも、

unsigned int test=0;
test=~test;

-1を生成します。

これにより、すべてのビットが で埋められ、'1'そのシステムで可能な限り大きな整数になると思いました....

助けてくれてありがとう!

4

3 に答える 3

12

値をどのように出力しますか?

「-1」として表示される場合、または大きな符号なし整数が、ビットを出力するときにビットが解釈される方法にすぎない場合、ビット自体は違いを認識していません。

値として出力する必要がありunsignedます。

また、他の回答で指摘されているように、システムが数値を保存する方法について多くのことを考えています。数値とその数値を表すために使用されるビットとの間に特定の相関関係があるという保証はありません。

とにかく、この値を取得する適切な方法は、 を#include <climits>使用することUINT_MAXです。

于 2013-02-14T09:43:39.650 に答える
4

あなたは正しく理解していません。整数は整数を表し、それだけです。表現の詳細は (いくつかの例外を除いて) 標準の一部ではありません。また、ビット演算と整数値の間の相関関係を想定する必要はありません。

(皮肉なことに、モジュラー算術規則によって標準-1義務付けているのは、符号なし整数に変換されること、実際にはその符号なし型の可能な最大値であるということです。)

更新:明確にするために、私は一般的にすべての整数型について話しています。符号なしの型のみを使用する場合(これは、否定的な回答があったためではないと思います)、ビット単位の操作と表現された値の間に明確な対応があります。

于 2013-02-14T09:44:10.130 に答える
1

または、次を使用できます。

unsigned int test =0;
test--;
于 2013-02-14T12:36:58.387 に答える