web-dev-qa-db-ja.com

2の補数の分数で負の数を表す方法は?

だから私は番号を表現したい-12.5。したがって、12.5は次のようになります。

001100.100

分数を計算しない場合は簡単です、-12は:

110100

しかし、-12.5とは何ですか?それは...ですか 110100.100?この負の割合を計算するにはどうすればよいですか?

21
Tom

10進数システムでは、各数値の位置(または列)は(右から左に数値を読み取る)を表します:単位(10 ^ 0)、10(つまり10 ^ 1)、何百(つまり10 ^ 2)など。

符号なし2進数の場合、基数は2であるため、各位置は(再び、右から左に読み取ります):1(つまり2 ^ 0)、2(つまり2 ^ 1)、4(つまり2 ^ 2)などになります。

たとえば

2^2 (4), 2^1 (2), 2^0 (1).

符号付き2の補数では、最上位ビット(MSB)が負になります。したがって、番号記号を表します。負の数の場合は「1」、正の数の場合は「0」です。

3ビットの数値の場合、行には次の値が保持されます。

-4, 2, 1
 0  0  1 => 1
 1  0  0 => -4
 1  0  1 => -4 + 1 = -3

固定小数点(小数)システムが保持するビットの値は変更されません。列の値は、前と同じパターンに従い、基数(2)の累乗ですが、累乗は負になります。

2^2 (4), 2^1 (2), 2^0 (1) . 2^-1 (0.5), 2^-2 (0.25), 2^-3 (0.125)

-1は常に111.000
-0.5に0.5を追加:111.100

あなたの場合110100.10は-32 + 16 + 4 + 0.5 = -11.5です。あなたがしたことは-12を作成し、0.5を引くのではなく0.5を加えることでした。

実際に必要なのは-32 + 16 + 2 + 1 + 0.5 = -12.5 = 110011.1

25
Morgan

負の整数になるまで、または定義された制限に達するまで何度も数を倍にして、それに応じて小数点を設定できます。

-25は11100111なので、-12.5は1110011.1です

5
Immueggpain

だから、Uは2の補数表現で-12.5を表現したい

12.5:->> 01100.1

(01100.1)の2の補数:->> 10011.1

2の補数表現の重み付きコードプロパティをチェックして、ANSを確認します(MSBの重みは-ve)。 -16 + 3 + .5 = -12.5を取得します

2
Rajesh Pradhan