ここから本文です

すっごくコンピュータの仕組みに詳しい方に質問です。 COBOLにはBCD(ニ進化十進...

アバター

ID非公開さん

2019/11/200:40:46

すっごくコンピュータの仕組みに詳しい方に質問です。

COBOLにはBCD(ニ進化十進数)という腐ったデータ形式が有ります。こんなものを用意したモチベーションを教えてください。

私が思うに、今から50年前だと、死ぬほどバカなプログラマと死ぬほどコンパイルに時間がかかるコンピュータしかなかったので、両者をすり合わせるためにどうしても必要な「毒」だったと推測しています。

認識が合っているか間違っているかを教えて下さい。

閲覧数:
77
回答数:
8
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

ogu********さん

2019/11/210:19:53

あなたの認識は間違っています。

BCDが使えなくなったら、あなたの給料、税金、預貯金などの お金に関する処理に間違いが起きる可能性が大きくなります。

それは先の回答者が言っているように私達が普段使っている10進どうしの計算と2進どうしの計算で主に割り算のときに循環小数になる場合が異なるとか、10進→2進、2進→10進などの変換時に有限の桁数の場合、わずかな誤差がが生じるというような問題があります。

コンピューターでBCDを用いるのはそれなりの意義があります。

  • アバター

    質問者

    ID非公開さん

    2019/11/212:07:58

    COBOLプログラムはJavaプログラムに置き換わって行っています。
    メインフレームはPCサーバーに置き換わって行っています。

    まさか、PCサーバー上で動くJavaプログラムでBCDなんて使うわけが有りません。なぜ、そんなことを言うのですか?

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/11/6 11:54:23

皆さんありがとうございます。

ベストアンサー以外の回答

1〜5件/7件中

並び替え:回答日時の
新しい順
|古い順

プロさん

2019/11/611:48:49

コンパイルに時間がかかるんじゃなくて
動作を軽くするためです。
浮動小数なんぞ存在しませんでした。
なんせバスが8ビットしかないのです。
コンパイルは関係ないです。

COBOLだと0.1を、8ビットの変数で保存できます。

YOZAKURAさん

2019/11/421:33:51

コンピュータの仕組みに詳しい訳ではありませんが、CPU内部の情報は「0」か「1」の組合でBCDとなっています。

腐ったデータ形式ではなく、今のプログラマーはそのBCDとか「0か1」かをより考慮せずにソフト開発ができているだけではないかと思います。

>バカなプログラマと死ぬほどコンパイルに時間がかかるコン・・・・
その時代のCPUの処理速度と今のCPUの処理速度を比較したら、そのような考えになると思います、それをいうと50年後のCPUのプログラマーが今CPUと比較していうのと同じだと思います。

当時のIBM、HITAC、NEACなど、どのメーカのCPUもそのようなものでしたから「毒」とかいうものではありません。
今はPCでさえメモリー容量は当時のCPUの10万倍程度ではないかと思います、それから想像してください。

2019/11/209:28:20

>認識が合っているか間違っているかを教えて下さい。

その認識は間違ってます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

原沢信道さん

2019/11/208:48:55

人間の行う計算は殆どが10進数です。一方、コンピュータは2進数計算が得意ですが、10進数を2進数に変換したり、戻したりするにも時間がかかります。そこで、メインフレームの場合は、2進化10進数を直接計算できる加算回路を用意して、変換にかかる時間を無くし、処理効率を上げています。一般的な文字コードで10進数を表現すると1桁1バイトですが、2進化10進数であれば、ほぼ、2桁1バイトで持てるので、補助記憶装置に10進数の数値情報を持たせるにも有効な方法です。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

mig********さん

2019/11/206:51:38

ハードウェアが非常に高価で、コスト面で制約が大きかったからだと思っています。

小数点問題は桁数を充分増やして丸めれば、実質的にオーケー、でもハードの能力が・・・

もうひとつ、BCDにすると数字表示がしやすいというメリットがあります。いまのLCDディスプレイのような装置があるのが当たり前と思ってはいけません。駅の券売機みたいに、数字の羅列のディスプレイ(7セグメント)がずらりと並んでいるだけなのが、ディスプレイだった時代もあるわけで、そういうときに2進数を10進数表示するのにBCDを使うとハードウェアがとても簡素になります。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる