2012-03-21 3 views
0

これは私が過去の論文で見た質問です。私は10の補数を理解していると思うが、2つの補足についての次の質問を理解していない。また、2人の賛辞はバイナリと何が関係していますか?2の補数データ表現

2の1110で表されるベース10の数字は、k = 4の補数ですか? k = 5の場合、答えは変わるでしょうか?

ご協力ありがとうございます。

+0

kは最大ビット数ですか? – Glenn

答えて

2

2の補数は、2進数でネガティブ数を表す方法です。私はそれがどのように動作するのか理解していませんが、それはその背後に数学的基礎があります。 は、例えば数字6をとります。バイナリでは0110です。次に-6を表すには、2の補数アルゴリズムを適用する必要があります。

アルゴリズムは、すべての数字を右から左にコピーすることです。最初に1に遭遇したときにそのまま残しますが、その点から、あなたが進んだときにすべての数字を反転させます。この例では、右から左に移動します。最初は0です。次に、1があります。その間に10を返します.1に達したので、今度はすべてのビットを反転する必要があります。次の1は1ですので、010にコピーします。最も左のビットは0なので、1に反転するので、1010になります。これは-6桁で4桁です。 2の補数の負の数値は、MSB(常に最上位ビット - Most Significant Bit)に対して1です。

私が続行する前に、簡単な変換方法があります。すべてのビットを反転して1を加算し、同じ結果を得ます。 0110を逆転すると1001になります.1を加えると再び1010になります。どのように動作するのかわかりませんが、動作します。

どのくらい8 - 6ですか?それは8 +(-6)のようです。 2の補数では1000 + 1010 = 10010

MSBがトリミングされて0010を取得します。これは2 - 8です。これは機能します。

-6(1010)をとり、2の補数をもう一度適用すると、(2番目の方法で)invert(1010)+ 1 = 0101 + 1 = 0110 = 6になります。負の数は絶対値を示します。

そして今私たちはあなたの質問の第2部に進むことができます:1110.正の数の世界ではこれは14です。しかし、正と負の両方の数値では、MSB(最も顕著なビット)は1であり、数値は負である。 -6の例のように、2の補数を適用すると絶対値になります。したがって、反転(1110)+ 1 = 0001 + 1 = 0010 = 2となる。したがって、1110は-2である。

私は問題のkは数字の数字であると信じています。 kが5ならば、-2をどのように表現するのですか?

5桁で表される2から始まり、次に2の補数変換を適用すると答えてください。

2その上に00010つのcomplentあなたは私たちが8ビットを持っていたならば、-2 11111110

だろうと結論付けることができ、反転(00010)+ 1 = 11101 + 1 = 11110.

ですこの現象を符号拡張といいます。これは、負の数をkビットで表すことができ、a)MSBが1であり、b)kビット以上を使用する場合、元のMSBおよび左からのすべてのビットがすべて1。

また、それを証明するための数学もありますが、それは私には分かりません。

ところで、私のウェブサイトを見ることができます。あなたの質問がChordBitsという製品で解決した問題を正確に突き止めました.ChordBitsでは、ビットをオン/オフすることができます。また、他のオプションの中でも、2の補数を適用して見た目を見ることができます(シェアウェアのバージョンは完全です機能的)。 www.codechords.com

乾杯

+0

sum [i = 0..inf](2^n)を計算するために無限の指数級数和の計算式を適用すると-1になることに注目すると興味深いことです。したがって、最重要ビットを符号が無限の数に拡張されているとみなすと、コンピュータの2の補数形式は2進数の数学的意味と一致します。 – supercat