タグ付けされた質問 「twos-complement」

23
「2の補数」とは何ですか?
私はコンピュータシステムのコースに参加しており、Two's Complementに部分的に苦労しています。私はそれを理解したいのですが、読んだすべてが私のために絵をまとめていません。ウィキペディアの記事や、テキストブックなどのさまざまな記事を読みました。 したがって、私はこのコミュニティWikiの投稿を開始して、2の補数とは何か、それをどのように使用するか、キャストなどの演算(符号付きから符号なし、またはその逆)、ビット単位演算、ビットシフト演算中に数値にどのように影響するかを定義したいと思いました。 私が期待しているのは、プログラマが簡単に理解できる明確で簡潔な定義です。

18
符号付きの数値に対して、符号と絶対値よりも2の補数を好むのはなぜですか?
-1を2進数で表すために、2の補数が使用される理由があるかどうか知りたいだけです。ビットを反転して1を追加しますか? -1は、10000001ではなく11111111(2の補数)で表されます。これは、最初のビットが負のフラグであるバイナリ1である10000001です。 免責事項:私は自分の仕事のためにバイナリ算術に依存していません!

11
〜x +〜y ==〜(x + y)は常にfalseですか?
このコードは常にfalseと評価されますか?どちらの変数も2の補数の符号付き整数です。 ~x + ~y == ~(x + y) 条件を満たす数はあるはずだと思います。私は間の数字をテストしようとした-5000と5000が、平等を達成したことがありません。条件の解を見つけるための方程式を設定する方法はありますか? 片方をもう片方に交換すると、プログラムに潜むバグが発生しますか?

10
Javaでは整数はビットレベルで内部的にどのように表されますか?
Javaが整数を内部的に格納する方法を理解しようとしています。私はすべてのJavaプリミティブ整数が署名されていることを知っています(短いものを除く?)。つまり、1バイトで使用できるビット数が1つ少なくなります。 私の質問は、すべての整数(正と負)が2の補数として格納されているのか、それとも2の補数の負の数だけなのかということです。 スペックが言っているのがわかりますx bit two's complement number。しかし、私はしばしば混乱します。 例えば: int x = 15; // Stored as binary as is? 00000000 00000000 00000000 00001111? int y = -22; // Stored as two complemented value? 11111111 11111111 11111111 11101010 編集 明確にするために、 x = 15 In binary as is: `00000000 00000000 00000000 00001111' Two's …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.