0

これは私が過去の論文で見た質問です。私は10代の褒め言葉は理解していると思いますが、2人の褒め言葉に関する次の質問は理解できません。また、2つの褒め言葉はバイナリと何の関係がありますか?

基数10のどの数が、k = 4の2秒補数の1110で表されますか?k = 5の場合、答えは変わりますか?

答えを説明してください、助けてくれてありがとう!

4

1 に答える 1

2

2 の補数は、負の数を 2 進数で表す方法です。それがどのように機能するかはわかりませんが、その背後には数学的基盤があります。たとえば、数値 6 を考えてみましょう。2 進数では 0110 です。次に、-6 を表すには、2 の補数アルゴリズムを適用する必要があります。

アルゴリズムは、すべての数字を右から左にコピーすることです。最初に 1 に遭遇したときはそのままにしておきますが、その時点からすべての桁を反転させて左に進めます。この例では、右から左に進みます: 最初に 0 があり、次に 1 があります。それをコピーするので、その間に 10 があります。次は 1 です。これを 0 としてコピーすると、010 になります。左端のビットは 0 なので、1 に反転すると 1010 になります。これは 4 桁で -6 です。2 の補数の負の数の MSB (左端のビット - 最上位ビット) は常に 1 です。

先に進む前に、変換のための簡単な方法があります。すべてのビットを反転してから 1 を追加するだけで、同じ結果が得られます。0110 を反転すると 1001 になります。1 を足すとまた 1010 になります。

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

4 桁で作業するので、MSB をトリムして 0010 を取得します。これは 2 で、これは 8 - 6 です。これは機能します。

-6 (1010) に 2 の補数を再度適用すると、(2 番目の方法を使用して) invert(1010) + 1 = 0101 + 1 = 0110 = 6 が得られます。したがって、2 の補数アルゴリズムを負の数に適用すると、絶対値。

それでは、質問の 2 番目の部分である 1110 に移ります。正の数の世界では、これは 14 です。しかし、正の数と負の数の両方の作業では、この数の MSB (最上位ビット)は 1 で、数値は負です。-6 の例のように、2 の補数を適用すると絶対値が得られます。したがって、Invert(1110) + 1 = 0001 + 1 = 0010 = 2. したがって、1110 は -2 です。

質問のkは桁数だと思います。k が 5 の場合、-2 はどのように表せますか?

それに答えるために、5 桁で表される 2 から始めて、2 の補数変換を適用します。

2 は 00010 です。2 の補数は invert(00010) + 1 = 11101 + 1 = 11110 です。

8 ビットの場合、-2 は 11111110 になると結論付けることができます。

この現象は符号拡張と呼ばれます。負の数を k ビットで表現できる場合、a) MSB は 1 になり、b) k ビットを超えるビットを使用する場合は、元の MSB と左のすべてのビットがすべて1.

繰り返しになりますが、その背後にはそれを証明するための数学がありますが、私にはよくわかりません。

ところで、あなたは私のウェブサイトで見ることができます。たまたまあなたの質問は、私が ChordBits という製品で解決した問題にぴったり当てはまりました。この製品では、ビットのオンとオフを切り替えることができ、他のオプションの中でも特に、ビットに 2 の補数を適用して、それがどのように見えるかを確認できます (シェアウェア バージョンは完全に機能的)。www.codechords.com

乾杯

于 2012-03-21T19:01:35.600 に答える