ソフトウエア開発技術者試験のための勉強をしています。
ハミング符号では、例えば情報ビット4ビットには誤り検出ビット3ビットが必要で、この3ビットは情報ビット4ビットのどこに入れても良いとあります。この方式の前提は、あらかじめ送信側と受信側で誤り検出ビットの位置を決めてあるからですよね?つまり受信側が、受け取ったビット列のどこが誤り検出ビットなのかを知らなければ誤りの検出や訂正は出来ない、と理解しています。
よって、「ハミング符号によるチェック方式において”1001101”というビット列を受け取ったが、正しくない。どのビットが誤っているかを示しなさい。」という問題(翔泳社ソフトウエア開発技術者2005年度版P85)は、どこが誤り検出ビットなのか書いていないので解けないと思うのですが、違うでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

> ハミング符号では、・・・この3ビットは情報ビット4ビットのどこに入れても


> 良いとあります。
> この方式の前提は、あらかじめ送信側と受信側で誤り検出ビットの位置を
> 決めてあるからですよね?
その通りです。

> つまり受信側が、受け取ったビット列のどこが誤り検出ビットなのかを知らなければ
> 誤りの検出や訂正は出来ない、と理解しています。
それで正しいです。
その上、さらにビット間の演算式(チェック式)も知っている必要が有ります。

> 「ハミング符号によるチェック方式において”1001101”というビット列を
> 受け取ったが、正しくない。どのビットが誤っているかを示しなさい。」
> という問題(・・・)は、どこが誤り検出ビットなのか書いていないので解けない・・・。
その通り解けません。

あくまでもビット配列と演算式が規定されていないと解く事は出来ません。
ビット配列については質問者さんの言われるように、単なる約束事ですから
送信者と受信者が一致していればどのように決めてもいいのです。
事実、書物によってビット配列は色々です。

蛇足ですが、誤りビット1ビットを簡単に見つけられるビット配列をご紹介します。
これを理解するとハミング符号が身近になります。

X1 X2 X3 P3 X4 P2 P1
Xが情報ビット、Pが検査ビットです。ビットに前から順に7から1の番号を打ちます。
判定式は
X1+X3+X4+P1=0
X1+X2+X4+P2=0
X1+X2+X3+P3=0
です。
ここで、例えばX3ビットが間違うと1行目と3行目の式がエラーになります。
つまりP1とP3に関する式ですね。
ビット番号に着目して見ましょう。
X3は5番目、P1は1番目、P3は4番目で、1+4=5でX3が誤りと言うことを示しています。
他のビットでも試して見てください。
    • good
    • 0
この回答へのお礼

明快な回答ありがとうございます。
なるほど、教えていただいたビット配列を使うと間違っているビットがどこなのか簡単にわかりますね。とても便利です。

ところで、細かい点なのですが確認させてください。
> ビット間の演算式(チェック式)も知っている必要が有ります。

これは厳密には、演算式そのものは知らなくても最低限偶数パリティか奇数パリティかさえわかっていればよいのでしょうか?
受信側では誤り検出ビットを1つずつ判定式に含め、各情報ビットを必ず2回以上判定式に使う、という条件さえ満たして任意の判定式を作れば判定できてしまうような気がするのですが。
例えば上記例でいうと、判定式は以下のいずれでも誤りの判定は出来るのではないかと考えました。(もちろんこれらのパターンでは教えていただいた簡単な間違いビットの計算方法は使えなくなりますが)

A)X1を3つにするパターン
X1+X3+X4+P1=0
X1+X2+X4+P2=0
X1+X2+X3+P3=0

B)X2を3つにするパターン
X2+X3+X4+P1=0
X1+X2+X4+P2=0
X1+X2+X3+P3=0

C)X3を3つにするパターン
X1+X3+X4+P1=0
X2+X3+X4+P2=0
X1+X2+X3+P3=0

D)X4を3つにするパターン
X1+X3+X4+P1=0
X1+X2+X4+P2=0
X2+X3+X4+P3=0

お礼日時:2005/04/03 21:13

No.2です。

追加質問にお答えします。

> 厳密には、演算式そのものは知らなくても最低限偶数パリティか奇数パリティかさえ
> わかっていればよいのでしょうか?
それではだめでしょうね。
演算式というのは質問者さんの言われるA,B,C,D各パターンの内のどれか
(あるいは別のもの)ということです。
これが分らないと、仮に誤り検出は出来たとしても、誤り訂正は出来ません。
ハミング符号は1ビットの誤りは訂正でき、2ビットまでの誤りは検出できる仕様です。

例で説明します。
Aパターンで1010を変換するとP1P2P3が010となります。
これが1110010と誤って受信されたとするとAパターンではP2P3の誤りを検出し、
DパターンではP2だけの誤りを検出します。
従ってあらかじめAパターンである事を知っておかないと誤りビットの特定が出来ない、
つまり訂正が出来ないという事になります。
    • good
    • 0
この回答へのお礼

なるほど、やってみると確かにそうですね。
すっきりしました。
どうもありがとうございました。

お礼日時:2005/04/04 22:03

通常、「4ビットの情報ビット」+「3ビットのチェックビット」を付加して、「符号全体長は7ビット」としていると思います。



正確な問題文が手元に無いので何とも言えませんが、
その問題は、「情報処理技術者試験の過去問」でしょうか?それとも、「翔泳社作成の練習問題」でしょうか?

後者の場合問題そのものに間違いがある可能性も否定できないと思います。

過去問の一例を参考URLとしてリンクします。
「ソフトウエア開発技術者」⇒「平成15年」⇒「問66」を選択して下さい。

参考URL:http://smickey.cool.ne.jp/cgi-bin/text/textprint …
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。教えていただいたサイトの問題ならば納得がいきます。
この問題は翔泳社作成の練習問題だと思います。
問題文はこれで全てで、補足の絵や図などはありません。
この問題の正誤も気になるのですが、理論的に、送信側が適当に(勝手に)誤り検出ビットを情報ビットに混ぜて送って、それで誤りの検出や訂正が出来るものなのかを知りたいと思っています。
受信側で何か数学的な処理を施せば誤り検出ビットがどれかわかるとか。
ネットで符号理論の講義資料などをいろいろ調べましたが、ハミング符号の作り方などは書いてあってもこの点が書いてあるものが見つけられませんでした。

お礼日時:2005/04/03 17:11

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q問題と課題の違いにいて?

こんにちは、みなさん!!

【質問】問題と課題の違いは何ですか?会社で、よく、課題や問題と
    言った言葉がでますが、違いが明確に分りません。    

ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

問題は解決されるためにあり、課題は挑戦されるためにある,という人も居ます.
  http://blue.ap.teacup.com/motokuni/787.html

問題は、あるべき姿と現状のギャップ。
課題は、問題をなくすために解決すべきこと。
 http://d.hatena.ne.jp/y_mori/20080107/1199720488
問題は,未だ解決すべき事が分かっていない状態で,問題点がはっきりすれば,解決すべき課題となりますね.
  http://www.zukai.net/002moku/moku02.html
  http://dtcn-wisdom.jp/J-Edition%202/J26%20app%20N%20problem-subj%20J.pdf
  http://plaza.rakuten.co.jp/tomo1013/diary/200512140000/

Q誤り制御方式の誤り検出再送要求方式(ARQ: Automatic Repeat reQuest)について。

ARQ方式のSR(Selective-Repeat)ARQ方式についてお聞きしたいのですが。

無線通信などで受信側がフレームを受信できなかったときに、後から来たフレームは受信側のバッファというところにおかれます。

ここでバッファの容量についてお聞きします。まず、バッファの容量を越えフレームが溢れてしまった場合どうなるのか?

バッファの容量が大きすぎるとどういったことがおきるのか?

無線通信の場合バッファの最適であろう容量はどうやったら求められるのか?

ということについてお尋ねします。
技術者の方是非お願いします。

Aベストアンサー

こんにちは。今は離れていますが技術者です。

まず、ARQ(自動再送要求)は基本的な再送制御方式の1つであり、実際のしくみや手順、オーバーヘッドは実装によって違います。

> バッファの容量を越えフレームが溢れてしまった場合どうなるのか?

バッファオーバーフローというエラーが受信側から送信側に報告されます。
送信側ではこれを受けて一定時間後に再送する等の処理を行います。(こういうところがインプリマター)

> バッファの容量が大きすぎるとどういったことがおきるのか?

単純に受信側のコストが上がります。
大容量のメモリを装備すると価格が上がるということです。メモリ管理機能も必要になります。

> 無線通信の場合バッファの最適であろう容量はどうやったら求められるのか?

一般的にはトラヒックを仮定してシミュレーションで最適値を求めます。
受信側が再送を要求する契機としては他にもフレーム破損、フレーム廃棄などがありますので、いくつかの条件を振らせてシミュレーションします。
再送制御、バッファ管理、などをキーワードに電子情報通信学会などの論文を検索するとシミュレーションの実際がわかると思います。

こんにちは。今は離れていますが技術者です。

まず、ARQ(自動再送要求)は基本的な再送制御方式の1つであり、実際のしくみや手順、オーバーヘッドは実装によって違います。

> バッファの容量を越えフレームが溢れてしまった場合どうなるのか?

バッファオーバーフローというエラーが受信側から送信側に報告されます。
送信側ではこれを受けて一定時間後に再送する等の処理を行います。(こういうところがインプリマター)

> バッファの容量が大きすぎるとどういったことがおきるのか?

単純に受...続きを読む

Q問題、課題、原因要因、目標、対策、現状把握の違い

タイトルの件、違いは何ですか

問題、課題、原因【要因】、目標、対策、現状把握の違いについて

自分の認識は、下記のとおりです

事例:会社の利益が平成23年度、前年比で100万円少なかった

1:現状把握
⇒売上、費用を全て調査
⇒印刷代だけ、前年比で、100万円多かった

2.問題
⇒会社の利益が、平成23年度、前年費で、100万円少ない

3.原因、要因
⇒印刷費用の使い過ぎ【100万円】

4.課題
⇒会社の利益の向上【100万円】

5.目標
⇒会社の利益を100万円上げる【平成24年度】

6.対策
⇒廃棄する紙の中から、リサイクルできる紙をプリンターに使う
⇒必要なものだけ、カラープリンターを利用する

以上、ご存知の方、いらっしゃいましたら、宜しくお願いします。

Aベストアンサー

 以前にも似たような相談がありましたよね。これらは問題解決のための科学的アプローチの要素です。時系列的には次のような流れとなります。


問題⇒現状把握⇒分析⇒課題⇒目標⇒原因・要因⇒対策⇒評価⇒処置

問題
 問題とは関心が持たれる事項、とくに望ましくない懸念事項です。
 ⇒会社の利益が平成23年度、前年比で100万円少なかった

現状把握
 現状を調査して問題に絡む事実関係を明らかにすることです。
 ⇒売上、費用を全て調査

分析
 現状把握した結果から課題が見えるようにすることです。
 ⇒印刷代だけ前年比で100万円多かった

課題
 改善に取り組むべき不具合(解決すべき事項)です。
 ⇒印刷代の削減

目標
 課題に含まれるべき要素であり、改善で達成すべき到達点です。
 ⇒前年並の印刷代(現状より100万円の節減)
 可能な限り年度の最終目標だけではなく毎月かせめて四半期ごとの中間目標も立てます。

原因・要因
 不具合は何かの結果であり、その結果を引き起こす大本の事項が原因です。
 原因には幾つかの要素からなることがあり、それぞれの要素が要因です。
 ⇒印刷費用使い過ぎの原因(「印刷費用使い過ぎ」は原因ではありません。それは結果であり、その結果をもらたす大本の事情が原因です)
 文面からでは原因は不明ですが、使用済み用紙のリサイクル管理手順の不備、カラープリントすべき判断基準の不備が要因としては考えられます。しかし、これらを完璧に実施しても100万円の節約になるかどうかの根拠が明らかではありません。更なる調査が必要です。

対策
 課題を解決する手段です。可能な限り原因(要因)を取り除くことです。
 ⇒使用済み用紙のリサイクル管理手順を整備して実施運用するう
 ⇒カラープリントする判断基準を整備して実施運用する
 ただし、これらを完璧に実施しても100万円の節約になるかどうかの根拠を明らかにしていないので、その調査結果によってさらなる対策が必要になります(つまり要因はもっと他にもあるかも知れません)。対策をすべて行ったら目標達成になる科学的な根拠が必要です。精神論ではいけません。

評価
 対策の結果が目標に対して達成できている程度を調べることです。
 ⇒毎月(または四半期)ごとにかかった印刷代を調べて前年同期と対比します

処置
 対策の結果が目標未達成のときに目標を達成できるように手を打つことです。
 ⇒毎月(または四半期)ごとに目標未達成なら挽回のための手をこまめに講じます。

 以前にも似たような相談がありましたよね。これらは問題解決のための科学的アプローチの要素です。時系列的には次のような流れとなります。


問題⇒現状把握⇒分析⇒課題⇒目標⇒原因・要因⇒対策⇒評価⇒処置

問題
 問題とは関心が持たれる事項、とくに望ましくない懸念事項です。
 ⇒会社の利益が平成23年度、前年比で100万円少なかった

現状把握
 現状を調査して問題に絡む事実関係を明らかにすることです。
 ⇒売上、費用を全て調査

分析
 現状把握した結果から課題が見えるようにすることです。
 ⇒印...続きを読む

Q5ビット誤り訂正符号の符号語間最小距離

5ビット誤り訂正符号の符号語間最小距離はどのように求めたらよいのでしょうか。分かりやすく説明していただけると幸いです。

Aベストアンサー

5bitかどうかは知りませんが、
誤り訂正したいならbit数によらず最小符号間距離は3ではないでしょうか?
この場合1bit誤りまでは訂正できます。

まあ、分類して考えましょう。

・1bit狂っただけで他の符号と同じになってしまう場合。
ある符号が1bit狂うと他の符号と重なるということは、最小符号間距離は1です。
この場合、1bit狂っただけで他の符号と同じになってしまい、
その結果が正しいのか誤りがあるのか区別がつきません。

・1bit狂っただけでは他の符号と同じにはならないが、もう1bit(つまり2bit)狂うと同じになる場合。
ある符号が2bit狂うと他の符号と重なるということは、最小符号間距離は2です。
この場合、1bit狂うと、符号として定義されていないビットパターンになり、
誤りが生じたことは分かります。
しかし、それがいったいどの符号で1bit狂ってそうなったかまでは分かりません。
つまり1bit誤り検出可能ということになります。

・1bit狂っただけでは他の符号と同じにはならず、もう2bit(つまり3bit)狂って初めて同じになる場合。
ある符号が3bit狂うと他の符号と重なるということは、最小符号間距離は2です。
この場合、1bit狂うと、符号として定義されていないビットパターンになり、
誤りが生じたことは分かります。
さらに1bit狂ってそうなる符号は1つしかありません。
だからたぶんその符号が1bit狂ってそうなったのだろうと推定できます。
他の符号が狂ってそうなるには、2bit以上狂う必要があるからです。
つまり1bit誤り訂正可能ということになります。

5bitかどうかは知りませんが、
誤り訂正したいならbit数によらず最小符号間距離は3ではないでしょうか?
この場合1bit誤りまでは訂正できます。

まあ、分類して考えましょう。

・1bit狂っただけで他の符号と同じになってしまう場合。
ある符号が1bit狂うと他の符号と重なるということは、最小符号間距離は1です。
この場合、1bit狂っただけで他の符号と同じになってしまい、
その結果が正しいのか誤りがあるのか区別がつきません。

・1bit狂っただけでは他の符号と同じにはならないが、もう1bit(つ...続きを読む

Q問題と課題の違いは何ですか?

こんにちは、みなさん!!

タイトルの件、ご存知の方教えてください。同じ言葉のように思えます。よろしくお願いします。

Aベストアンサー

問題は、クリアしなければ状況が悪化する。
課題は、クリアしなくても悪化はしないが、
クリアすることで成長につなげられる。

Q調歩同期方式のパリティによる誤り検出方式について

調歩同期方式のデータ転送において、偶数パリティによる誤り検出方式を用いて、文字T(JIS7単位符号1010100)が送出されたとき、これを正しく受信したときのビット列はどういう列になるのか分かりません。

送出は、
 スタートビット(0)、
 文字の低位ビットから高位ビット、
 パリティビット、
 ストップビット(1)
の順です。

送るときは、
00010101X1
かと思いましたが、わかりません。
Xはパリティビットになります。これは0なのでしょうか?1なのでしょうか?

奇数個の誤りが生じている場合、誤りの有無を判定できるそうですがよく理解できません。

送信するときと受信するときはそれぞれどのようなビット列になっているのでしょうか?

どなたか教えていただけませんでしょうか?
よろしくお願いいたします。

Aベストアンサー

今ビット1の数が3個ですから偶数にするには1個足りません。
電線路上はSTT+10101001+STPです。
つまりパリティビットは1です。

受信したあとビット1の数を数えます。
偶数なら正常受信。奇数ならどこかで誤りが発生していますのでエラーと判定します。
もちろんパリティビットは除去します。

もし2個間違うと偶数になりますから正常と判断されます。3個なら奇数で・・・。 

Q「悩み」と「課題」の違い

上司に「仕事が忙しくて休む暇もない」ということを課題だと思って相談したところ、「きみ、それは課題ではなくてただの悩みだ」と指摘されました。上司に言われてよくわからないまま悶々としているのですが、悩みと課題の違いはなんですか?
自分の中では、
悩み・・・解決のしようのない漠然とした物 
課題・・・解決のしようがある論点
というように思うのですが、あっていますでしょうか?
また、最初に言った「仕事が忙しくて休む暇もない」というものの課題は「疲れて、労働効率が上がらない」・「納期が遅れている」という悩みから来る個別の問題ととらえればよいのでしょうか?

Aベストアンサー

認識論の立場からは、まず

あるべき姿と今ある姿の差を問題と呼び、その問題を解決するために具体的にどのような方策を取ったらよいだろうか、ということを課題と呼びます。

「悩み」は多くの場合単なる感想であり、ここから何が問題かを見つけ出すための生データであることが多いようです。


質問者さんは「仕事が忙しくて休む暇もない」と感じていらっしゃるわけですね。
しかしこれはどういう意味ですか?仕事が忙しいのは商売繁盛で良いことではありませんか?いわゆる「うれしい悲鳴」かもしれませんよね。解決すべき事柄は何でしょうか?
「仕事が忙しくて休む暇もない」というのは「仕事が忙しいことが原因で、休む暇がないという困ったことが生じている」という意味です。とすると、解決したい事柄は「休む暇がないこと」ですから、対策は、人員を増やすとか、暇な部署に配置転換するとか、転職するとか、受注を減らすということになります。

しかし、質問者さんがおっしゃりたいことはそういうことではありませんよね。
そこで「仕事が忙しくて休む暇もない」をこう書き変えてみます。
「休む暇がない程度に過剰に仕事が忙しい」
こう書きかえると、「仕事が忙しいこと」が解決したいことであるとわかります。しかし、これもやはり「うれしい悲鳴」かもしれませんから、「仕事が忙しい」ことからどんなまずい現象が生じているのかを言わなければなりません。それが、労働効率が上がらないことや納期遅れです。

すると、「労働効率が本来の効率(あるべき姿)から低下している(今ある姿)こと」および「本来守られるべき納期(あるべき姿)に遅れ(今ある姿)が生じていること」の2つが現象面に現れた「問題」です。そしてこの原因が「仕事の量が本来の適正な量(あるべき姿)を過度に超えて(今ある姿)しまっていること」が現象面の問題の原因となっている問題です。


以上まとめると、「休む暇がない程度に過剰に仕事が忙しいことによる、労働効率の低下および納期遅れの発生」が問題であり、「どうしたら仕事量を適正な量にすることができるか」が課題となります。

しかし、これはまだ本質的な問題ではありません。仕事の量が過剰であることの原因は何でしょう?そしてその原因のそのまた原因は?というように原因をさかのぼってゆき、これ以上さかのぼれない、というところまでさかのぼって得られたものが真の問題です。そして「どうやったら真の問題を解決できるだろうか?」が真の課題です。

認識論の立場からは、まず

あるべき姿と今ある姿の差を問題と呼び、その問題を解決するために具体的にどのような方策を取ったらよいだろうか、ということを課題と呼びます。

「悩み」は多くの場合単なる感想であり、ここから何が問題かを見つけ出すための生データであることが多いようです。


質問者さんは「仕事が忙しくて休む暇もない」と感じていらっしゃるわけですね。
しかしこれはどういう意味ですか?仕事が忙しいのは商売繁盛で良いことではありませんか?いわゆる「うれしい悲鳴」かもしれませんよね...続きを読む

Q調歩同期方式で、パリティビットなしの3単位符号の受信について

”100101001111”というビット列を左側から受け取ったとき、このビット列が表すデータを受信した順番に1文字ずつ2進数で表したものが、なぜ、「010,011」になるのかわかりません。

ここで1文字はパリティビットなしの3単位符号、調歩同期方式です。
スタートビットは”0”、ストップビットは”1”です。

パリティビットがないとあるので、送信のときつけられるのは、スタートビットとストップビットだけです。スタートビットが0なので、”100101001111”を左から見てみると、二個目に0があります。二個目がスタートビットなのでしょうか?

すると3個目から5個目から、”010”になります。
次にくるのが、1と0ですから、それぞれストップビットとスタートビット。8個目から10個目が”011”。すると11個目がストップビットになるかと思うのですが、最後の12個目が1になるのが理解できません。

これは無視してもいいのか、パリティビットなどの何か意味がある1なのかどちらなのか分かりません。
もしパリティビットがあれば、ストップビットの前につきますが、パリティビットがないときは・・・・??

どなたかお教え願えませんでしょうか。

よろしくお願いいたします。

”100101001111”というビット列を左側から受け取ったとき、このビット列が表すデータを受信した順番に1文字ずつ2進数で表したものが、なぜ、「010,011」になるのかわかりません。

ここで1文字はパリティビットなしの3単位符号、調歩同期方式です。
スタートビットは”0”、ストップビットは”1”です。

パリティビットがないとあるので、送信のときつけられるのは、スタートビットとストップビットだけです。スタートビットが0なので、”100101001111”を左から見てみると...続きを読む

Aベストアンサー

また出てきました。
調歩同期は過去の技術で結構理解しにくいのですが
例題を極端に書くと次のようにも書けます。

11110010111111001111111

1の連続から0になったらスタートビットです。
3ビットがデータで次の1のビットがストップビットです。
答えは010,011です。
1の数を縮めると問題と同じになります。

Q目標と課題の違い

スケジュールを立てるときに 来週の目標と
来週の課題とあったら
この2つの違いを例えるとどんな項目がですか?
例でいいので違いを教えてください。

Aベストアンサー

自分なりに解釈すると、
1.目標は方法が定まっておらす、達成すべきでないこと。
2.課題は方法が定まっており、必ずやるべきこと

体重を10kg減らすのは目標とすべき。
夏休みの宿題は課題とすべきでしょう。

体重を必ず減らす方法は存在しないので、課題とはできないし、夏休みの宿題は方法があるので必ずやるべきことと思うのですが。

Q16ビットの符号付固定小数点の使い方について

16ビットの符号付固定小数点について

最上位(15)ビットが符号ビットで14~0ビットが少数部という
データフォーマットだった場合、-0,25を表すとしたら、
0.25に符号ビットをセットした値=0xA000( 1 010 0000 0000 0000 )
になるという考え方は正しいでしょうか

Aベストアンサー

コンピュータ内部で一般に正負の数を固定小数点形式で扱う場合には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/コンピュータの数値表現

コンピュータ内部で一般に正負の数を固定小数点形式で扱う場合には2の補数形式で表されます。

小数点位置が何処にあるかは人が適当に仮定しますが、基本はCPUでの整数演算です。
その場合、16ビット表現では-32768...0...+32767が表されます。

最上位ビットの重みは-2**15=-32768,その他のビットの重みは右から0,1,2...n,..ビットは1,2,4,...2**n,...の重みを持っており、それらの各ビットの重みの和が表している数値となります。

負の数を表す場合、先ず正の数を考えてその1の補数を作り(全ビット1<==>0反転)...続きを読む


人気Q&Aランキング

おすすめ情報