◆二進化十進表現|詳細|データ復旧をサポートする会社を徹底検証!
二進化十進数 (BCD、Binary-coded decimal )とは、コンピュータにおける数値の表現方式の一つで、十進法の1桁を、0から9までを表す二進法の4桁で表したものである。「二進化十進符号」などとも呼ばれる。3増し符号など同じ目的の他の方式も含めることもある。
一般に4桁の二進数は、0から15までの整数を表すことができるが、二進化十進法ではこのうちの最初の10個を有効な数値として扱う。
| 十進法 | BCD表現 |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
例えば 127 という十進数は、 0001、0010、0111 という3つのBCDで表される。
二進化十進数には、ゾーン形式とパック形式があり、用途に応じて使い分けられる。 符号部を持たないパック形式では、ファイルなどの中の二進化十進数値を十六進数で表示すると十進数と同じように表示される(例えば、十六進数で「1234」と表示されるデータがあれば、十進数の「1234」のことである)。また、ゾーン形式では(機種や文字コードに依存するが、一般に)8ビット文字表示すると十進数と同じように表示される。ただし、符号部を持つ場合も多く、上記の表示が必ずしもわかりやすいとは言えないこともある。
簡単な利用法としては、電子回路上で、0~9を表示可能なBCD対応の数字表示素子1つに対してBCDの4桁を4本の入力信号として直接入力する、等の使われ方がある。二進数(または十六進数)で扱う場合と違い、表示素子に入力する前の変換が要らずデータバス上の信号をそのまま利用できるというメリットがある。
二進法で計算を行う多くのコンピュータでは、二進化十進表現を使用する機能(または、計算結果を補正するための機能)を備えている。
本来、コンピュータでは二進数で演算するのがコンピュータ資源(レジスタ、メモリ、計算量)の有効利用になる。それでも二進化十進数が有効な場合があるのは、二進数と十進数との変換を回避することに「社会的な価値」があるからである。つまり二進化十進数は純粋なコンピュータの問題ではなく、十進数社会という現実からの要請による。コンピュータの能力が上がれば上がるほど、十進数への変換を必要としないというメリットより、数値どうしの演算に手間がかかるというデメリットのほうが大きくなり、計算には二進数を使ったほうがよくなる。
「社会的な価値」の具体例として、小数の丸め処理が挙げられる。小数 0.1 は十進数では有限桁で表記できるが、二進数では無限桁の循環小数となる。このため、入力値が十進数表現で有限桁の小数で定義されている場合に、二進数表現で丸め誤差を考慮せずに計算を進めると、十進数での演算では発生しなかった誤差が蓄積される可能性がある。例えば以下の Java プログラムを実行すると、double 型を使って 0.1 を 10,000 回加えた結果は 1,000.0 ではなく 1,000.0000000001588 となることがわかる。このような問題を避けるため、処理対象の値が十進の場合は、コンピュータ内の処理も二進化十進数で実装されることが少なくない。通貨を扱う事務アプリケーションなどが、しばしばこのケースに該当する。
<syntaxhighlight lang="java">public static void main(String[] args) {
double sum = 0.0;
for (int i = 0; i < 10000; i++)
sum += 0.1;
System.out.println("sum = " + sum);
}</syntaxhighlight>
バイナリエディタで十六進数で実データを見ると分かりやすい。通常のコードでは十進数での0~9の1桁を表現するのに十六進数を基準にコード化した状態では30〜39(ASCIIコード)やF0~F9(EBCDICコード)などで表示されるが、二進化十進表現では十六進数を基準にコード化した場合でも単純に0〜9となる。
ただしBCDは、通常はEBCDICコード化の事である。十六進化した場合に30〜39かF0〜F9かの違いでしかない場合が多い。アプリケーションの計算速度の上で内部計算用データエリアの持ち方として意識される場合もあるが、二進数のまま扱う任意精度浮動小数点数データエリア化の方が一般的である。メモリバス幅の狭かった時代の名残である。
メモリエディタ・バイナリエディタなどでリアルタイムに十六進数表現で十進数のように見ることができるために端末間での通信インタフェイス形式やアプリケーション間での受け渡しインタフェイス形式として存在している場合があるが、実際には分かりやすいベタデータをインタフェイス上に流す必要もなく、しかも十六進数化した際にエリアに無駄があるので単純に二進数化される場合が多い。
関連項目
- IBM 1401システムに初めて用いられたBCDコード(二進化十進表現)
- パック10進数
- アンパック10進数(ゾーン10進数)
- 3増し符号
- 二五進法
- 固定小数点数
- COBOL
- MSX-BASIC
- EBCDIC(BCDを拡張したIBMの文字コード)
- バイナリエディタ
Text is available under Creative Commons Attribution-ShareAlike (CC-BY-SA) and/or GNU Free Documentation License (GFDL).
最終更新 2012年2月28日 (火) 13:35 (日時は個人設定で未設定ならばUTC)。
【二進化十進表現】変更履歴
関連ワード
- 二進化十進表現|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
- アンパック10進数|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
- パック10進数|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
- Nano-ITX|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
- バイナリエディタ|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
- バイナリ|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
- TMS9918|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
- データ処理|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
- コピーオンライト|詳細 |データ復旧ならデータ復旧比較.jp|データ復旧の会社を徹底検証!
二進化十進表現|詳細:データ復旧の用語集をご覧の皆様へ
パソコンやデジカメなどのデータが消えた!パソコンが急に起動しなくなった!など、急なトラブルであなたの大切なデータが消えてしまったことはございませんか?そんな突然のトラブルからデータ復旧してくれるのが、データ復旧サービスです。データ復旧比較.jpの用語集ではデータ復旧に関する様々なキーワード「例:二進化十進表現」が検索できます。
ご利用上の注意
- 本用語集に掲載される用語は、百科事典「ウィキペディア日本語版」からプログラムにより自動的に抽出・表示されるため、一部ふさわしくない用語が表示される場合があります。
- 当社は、本用語集を通じて提供される情報に関する、有用性、適合性、完全性、正確性、安全性、合法性、最新性等について、いかなる責任も負わないものとします。
- 当社は、お客様が本用語集をご利用されることによって発生した直接・間接の損害に対して、いかなる責任も負わないものとします。

