
No.4ベストアンサー
- 回答日時:
コンピュータ内部で一般に正負の数を固定小数点形式で扱う場合には2の補数形式で表されます。
小数点位置が何処にあるかは人が適当に仮定しますが、基本はCPUでの整数演算です。
その場合、16ビット表現では-32768...0...+32767が表されます。
最上位ビットの重みは-2**15=-32768,その他のビットの重みは右から0,1,2...n,..ビットは1,2,4,...2**n,...の重みを持っており、それらの各ビットの重みの和が表している数値となります。
負の数を表す場合、先ず正の数を考えてその1の補数を作り(全ビット1<==>0反転)最下位ビットに1を加えた形となります。
このようにしておけば加減算が正負の数を意識しないで統一的に処理出来るし、16,32,64ビットの固定小数点(整数も含む)の相互変換は最上位の符号ビットを左に拡張する、或いは上位の符号ビット部分を削除するなどで容易です。
質問に記されている小数点位置15ビットの-0.25は次のように表現されます。
0.25 = 0010 0000 0000 0000
同上1の補数形
= 1101 1111 1111 1111 = 0xdfff
最下位ビットへの1の加算
= 1110 0000 0000 0000 = 0xe000
以上のように表されます。
各ビットの重みを考えて十進数に戻すと、符号ビット=-1,
その右...のビットは1/2,1/4,1/8 の重みを持っているので
-1 +1/2 +1/4 = -1 +3/4 = -1/4 = -0.25
のようになります。
加減算の場合は小数点位置が変わらず簡単ですが、乗算の時は16bit*16bit=32bitとなり、その結果を16bitの少数として求めるには32bit中のどの部分の16bitを取り出すかは人が意識してシフト演算で取り出す必要があります。
次等を参照下さい。
http://ja.wikipedia.org/wiki/コンピュータの数値表現
No.5
- 回答日時:
そのシステムが「2の補数」を使っているのなら、加減算は符号を意識しないでできるのだから、単純に 0-0.25 を計算してみれば良いんです。
(1)0000 0000 0000 0000
- 0010 0000 0000 0000
-----------------------
1110 0000 0000 0000
最初に(1)と書いたのは、そのままでは引き算できないので、先頭に1があるものと仮定して計算します。この1はボロー(借り)として、CPUのキャリー/ボロー フラグに記録される数です。結果はNo.2回答と同じです。
ただ、実数計算の場合(浮動小数点実数計算の場合)、負数は単純に符号ビットを反転するだけのシステムもあるので、その場合は質問者さんの考えた通りになります。(たぶん固定小数点では、こんなシステムはないと思いますが。)
No.3
- 回答日時:
う~む、どうなっているんだろう。
固定小数点に少数があるわけ無いでしょうに。整数ですよ。
-32768~32767までしか表せません。
浮動小数点であれば、指数と少数に分ける必要があります。
なお、符号ビットは符号だけで1ビットを使っているという考えは
誤りです。
16ビットでしたら 0x0000~0xffffまでの間、符号ビットがオンになる
コードを負数に割り当てていると考えるべきです。
割り当て方は色々ありますが、2の補数というのが今は固定していると思います。
つまり-1なら1の0x0001を反転して0xfffeとしプラス1し0xffffしたものが-1の
2の補数表現ということです。
もっとも、自分で専用のクラスでも作って、固定小数点で
データを保持するけども、小数部を持つという特殊なフォーマットに
することは可能です。
これはデータだけでなくクラス内のメソッドもフォーマットの一部と
言えるでしょうけど。
No.2
- 回答日時:
> 最上位(15)ビットが符号ビットで14~0ビットが少数部という
> データフォーマットだった場合、
小数点をどこで固定するか?なんかによってフォーマットは変わりますから、
> -0,25を表すとしたら、
> 0.25に符号ビットをセットした値=0xA000( 1 010 0000 0000 0000 )
> になる
必ずそうなるなんて保証が無いです。
前提条件として、表す数は1未満の小数で、14ビット=1/2、13ビット=1/4とかって事になってるのなら合ってるって事になるかも知れません。
> 16ビットの符号付固定小数点
って条件だけだと、
15ビット:符号、14ビット~8ビット:整数部、7ビット~0ビット:小数部
15ビット:符号、14ビット~12ビット:整数部、11ビット~0ビット:小数部
15ビット:符号、14ビット~0ビット:数値部(小数部)、表す数は-0.32768~+0.32768の0.00001刻み
どんなのだってあり得ます。
No.1
- 回答日時:
残念ながら違いますね。
符号付固定小数点というのは、符号(1ビット):整数部(8ビット):小数部(7ビット)という具合に並べて、全部で16ビットです。
詳しくは以下のリンクを参照してください。
参考URL:http://www2.muroran-it.ac.jp/circle/mpc/front/ol …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで xlOn xlOff の切替
-
SSDのデータがビット落ちにより...
-
EXCEL16進⇒浮動小数変換したい
-
2ビット、3ビット、4ビットのグ...
-
プログラム言語FortranとCの違...
-
COM1(RS232C)とUSB仮想COMポー...
-
【有効数字について】 授業で、...
-
KBのMB違いって
-
iPhoneの使い方 iPhoneのiCloud...
-
携帯電話の略語であるMBって英...
-
1Mbpsって毎秒何キロバイト?
-
画像サイズのMBとKBについて
-
【エクセル】四捨五入・二捨三...
-
ブルーレイ2層50GBの焼き...
-
IBM漢字とUTF-8の変換について
-
数学の問題です。桁数に関する...
-
bpsとは一体何でしょうか?
-
1秒は何ミリ秒とか、単位変換の...
-
16進数どうしの乗算
-
符号付の整数8ビット…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL16進⇒浮動小数変換したい
-
エクセルVBAで xlOn xlOff の切替
-
エクセルでビット1をカウント J...
-
2ビット、3ビット、4ビットのグ...
-
16ビットの符号付固定小数点...
-
6ビット(符号含む)の二進数
-
データ量の単位について教えて...
-
2進数の問題
-
2の補数
-
基本情報技術者試験のビットに...
-
基本情報技術者試験のビットに...
-
9ビットの2進数を符号付整数…
-
【有効数字について】 授業で、...
-
EXCELでの16進数取り出し、上...
-
携帯電話の略語であるMBって英...
-
プログラム言語FortranとCの違...
-
文字の容量(サイズ)についての...
-
実行計画の「COST」と「BYTE」...
-
組み込みCプログラムで実数型
-
1TBHDDに音楽ファイルは何ア...
おすすめ情報