だから私は番号を表現したい-12.5
。したがって、12.5は次のようになります。
001100.100
分数を計算しない場合は簡単です、-12
は:
110100
しかし、-12.5とは何ですか?それは...ですか 110100.100
?この負の割合を計算するにはどうすればよいですか?
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は11100111なので、-12.5は1110011.1です
だから、Uは2の補数表現で-12.5を表現したい
12.5:->> 01100.1
(01100.1)の2の補数:->> 10011.1
2の補数表現の重み付きコードプロパティをチェックして、ANSを確認します(MSBの重みは-ve)。 -16 + 3 + .5 = -12.5を取得します