2016-09-14 4 views
1

固定小数点演算の2の補数を10進数に変換する方法を知りたいと思います。固定小数点演算(ビット番号付き)の10進数への2の補数の変換

ビットポイントで11001011、小数点の後ろに2の位置を持つこの固定小数点演算を2の補数で得て、それを10進数にしたいとしましょう。

最初のビットが1なので、小数点は負の値になることはすでにわかっています。

2小数点の後ろに位置するので、110010 11です。

はその2の補数から標準形(1によってsubinvert)に変換:

110010 10(ここでは1によってIサブ)

001101 01小数で

001101を(私はここで反転)されます13

01の10進数は0です。

したがって、最終的には-13.1になります。それは正しいのですか、これを変換する方法さえありませんか?

答えて

1

最も簡単な方法は、値全体を整数に変換して(最初は固定小数点を無視して)、結果をスケーリングすることです。 110010 10:整数として

変換:スケールファクタによって

11001010 = -54 

デバイド= 2^2:

-54/4 = -13.5 

あなたは6.2固定小数点数を持っているあなたの例のためにそう

小数部は常に符号なしであることに注意してください。 (おそらく11 = +0.7510 = +0.510は、すなわち00 = 0.0、小数部分のためにあなたに= +0.2501+ 0.5を与えるだろうことを今見ることができます。)

+0

すごいああ答えと私と一緒にこの方法を共有するためのおかげで、知りませんでしたそれも同様に動作します! :) –

+0

@cnmesr:あなたは大歓迎です。固定小数点数を暗黙のスケーリングファクタ*を持つ*整数として考えるほうが便利でしょう。 –

関連する問題