ASCIIコードでは、48が0を表し、49が1を、50が2を、51が3を表します。そのためASCIIコードのまま演算にかけると、1+2は3にならず、小文字のc (=99) になってしまいます。このように、そのまま演算にかけると正しい答えが得られない符号(符号セット)をなんと呼びますか? 呼び名があれば教えてください。


http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/06/21 12:22:41
  • 終了:2010/06/28 12:25:02

回答(2件)

id:gday No.1

gday回答回数383ベストアンサー獲得回数712010/06/21 13:28:11

id:ShinRai

ありがとうございます。non-binaryコードと呼べばよいわけですね。

ASCIIやモールス符号は、非バイナリー符号というわけですね。

2010/06/21 13:35:29
id:goobee No.2

goobee回答回数88ベストアンサー獲得回数122010/06/21 13:37:02

ポイント35pt

コンピュータ上で文字を利用するために各文字に割り当てられるバイト表現は

「文字コード」だと思います。

http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%B...

id:ShinRai

Character Encodingというのですね。

だとすると、モールス符号やASCII符号における数字は、文字コード化された数字ということになるのでしょうか。

なるほど。たとえ数字であっても、文字コード化されていると、演算に投入することができないのですね。モールス符号の数字もそうなりますね。

2010/06/21 13:43:50
  • id:goobee
    >>モールス符号やASCII符号における数字は、文字コード化された数字ということになるのでしょうか。
    文字コード化された数字というより、バイナリを数値として解釈するか、文字として解釈するかということです。

    ASCII文字の1 + 2を演算に使用すると、コンピュータ内では数値の49+50と解釈され結果として
    99が算出されます。99の数値をASCII文字で解釈するとcになります。
  • id:ShinRai
    バイナリを、数値として解釈するか、文字として解釈するかということですね。

    しかし、すると、コンピュータは、どうして、それが数値か文字かがわかるのでしょう?


  • id:seble
    おいおい、
    コンピューターは文字か数値かなんか区別しないぞ。
    全てonとoffの電気信号(つまり人間の概念的には1と0の数値)でしかない
    文字とか数字とか区別してるのは人間の方。
    1だって文字の一種じゃん。
    一とかoneとかⅠとかūnusとかunとかeinsとかmojaとか全部、数値を文字に表している
    やっぱ全然分かってないじゃん。
  • id:ku__ra__ge
    たぶんShinRaiさんは、あるビット列を表示するときに文字になるのか数字になるのかをどうやって判断しているのか?ということを疑問に思ったんじゃないかな。
    答えは、人間の指示を元に判断される。

    具体的にはこんな感じ。どちらも10進数で表すと65になるビット列を画面に表示させてるんだけれども、人間の指示(プログラム)によってそれが"A"と表示されたり"65"と表示されたりする。
    printf("%c", 65); // ←この命令が実行されたときは、"A" と表示される
    printf("%d", 65); // ←この命令が実行されたときは、"65"と表示される
  • id:nasi-goreng
    回答拒否されました~
     
    文字化けって起こることありますよね?メールが読めない文字になっていたりする。
    文字コードも数種類あって、ちがうコード体系だとコンピュータのデータも違う文字になっちゃうんです。
     
    バイナリーがデジタルでバイナリーじゃないデータが別にあるって思い込んでいるようですが、コンピュータのデータはすべてバイナリーです。文字コードという特殊なデータがあるわけではないんです。プログラムもテキストも音楽データも画像データもすべて、0/1の塊です。
    コンピュータのファイルのレベルの話ならば、拡張子で区別したりするわけです。
    jpegのような画像ファイルはファイルに決まったデータを入れて画像ファイルであることがわかるようになっている場合もあります。画像ビューアーのプログラムが「これは画像としてファイルを開けない」って判断します。
  • id:sibazyun
    私も回答できないので、コメントだけ。

    たとえ話をします。A:「あなたはここへ車で来ましたか?」、B:「いいえ、電車で来ました」、A:「え、電車って、電気で動く車でしょう」で、Bの人は「車=自動車」なんだけれど、Aの人は自動車も電車も車です。

    バイナリー(=2進数)も、A:画像も数値も文字コードも皆0,1の集まりでバイナリー、という立場と、それはわかった上で、B:情報処理の上で1バイト、あるいは1ワードを処理するために、「バイナリー=数の表現」「非バイナリー=文字の表現」という言い方をしている場合があります。ここの2つを混同すると話がわからなくなります。

  • id:ShinRai
    皆様、書き込みありがとうございます。

    しかし、コンピュータのデータはすべてバイナリであるのか、バイナリと非バイナリという区分があるのか、ますます、わからなくなってきました。

    また、コンピュータにとっては、数値も文字も自分では見分けることができないので、人間が指定してあげる必要があるということでしょうか。


    質問の出発点に戻るならば、仮にコンピュータのデータがすべてバイナリであるとしても、そのまま演算に投入できるデータと、演算に投入しても意味のある結果が生まれないデータがあるとすれば、それらは別のものとして分類されていますか? このように質問することができるでしょうか。

  • id:hiko4karasu
    あ、私も回答拒否だ。

    >なるほど。たとえ数字であっても、文字コード化されていると、演算に投入することができないのですね。

    そういうわけでもないです。
    文字コードだと分かっていれば演算に投入できるでしょう。
    ASCIIコードで1+2を計算したければ、
    (49-48)+(50-48)=3
    と計算すれば良いです。
    これをもう一度ASCIIコードにしてテキストで出力したければ、
    3+48=51="3"(文字の「3」)となります。

    >モールス符号の数字もそうなりますね。
     
    ShinRai さんとしてはアナログであるモールス符号をどうやってコンピュータ上に入力するのかは分かりませんが、
    モールス符合だと分かっているならば、
    ・----というデータが来たら、1
    ・・---というデータが来たら、2
    と場合分けして1足す2を実施すれば良いです。
     
    >仮にコンピュータのデータがすべてバイナリであるとしても
     
    多値コンピュータでなければバイナリーです。
    演算に投入できないデータはありません。(といっていいと思う。)
  • id:ku__ra__ge
    >しかし、コンピュータのデータはすべてバイナリであるのか、バイナリと非バイナリという区分があるのか、
    >ますます、わからなくなってきました。
    「バイナリ」という単語には2つの意味があります。
    ・二進数の0と1の羅列で表現されたデータ
    ・文字コードで規定されていないバイト列を含むデータ
    前者の意味を使うなら、コンピュータのデータはすべてバイナリです。
    後者の意味を使うなら、コンピュータのデータはテキスト(文字コードで規定されたバイト列のみを含むデータ)とバイナリの2つに分かれます。


    >また、コンピュータにとっては、数値も文字も自分では見分けることができないので、人間が指定してあげる
    >必要があるということでしょうか。
    そうです。
    コンピュータがあるルールに従って数値か文字を判断するケースはありえますが、
    そのルールを指定するのは結局人間です。
  • id:ShinRai
    たとえば、人間は、モールス信号が聞こえてきたら、「あ、これはモールスだ」と自分で勝手に思います。それは記憶の中にモールス信号があるから、記憶とのパターン認識(pattern recognition)によって、判断していると思われます。


    そして、-・---や、-・---、・-・--、 --・--、などの聞きなれないコードが聞こえてくると、和文モールスを知っている人は、「おや、これは和文じゃないか」と思うのでしょう。

    (もしかすると、英文と同じ符号を聞いていても、単語の作り方で和文だとわかる人もいるでしょう)



    コンピュータは、同じことができないのですか


    どうしてできないのでしょうか
  • id:ku__ra__ge
    >コンピュータは、同じことができないのですか
    できます。
    webページを表示する際など日常的に行われています。
    歴史的経緯によって文字コードには様々な種類のものが存在し、「あ」という文字1つとっても
    その文字に該当するバイト列は何種類も存在します。
    どの文字コードを使うのが正解なのかが文章本体とセットで送られてくる場合もありますが、
    そうでない場合はコンピュータがあらかじめ決められているパターン認識方法によって
    「あ、これはUTF-8(文字コードの一種)で書かれたテキストだ」というように判断しています。
    (このときコンピュータが「勘違い」してしまうと文字化けが起きるわけですが)
  • id:sibazyun
    ・「モールス信号が聞こえてきたら」のコンピュータによる処理方法を考えて見ましょう。なお、モールス信号は電波や書き物でなく、可聴音とします。

    ・モールス信号は、音として短、長、音と音との間の無音が長さ1,3、7の5要素からなるものとします。

    ・まず、処理の前提として、「短(・)」とは、何ミリ秒から何ミリ秒の範囲、何ヘルツから何ヘルツの範囲などと決めます。そして、音声処理ソフトウェアで、短音、長音、無音1、無音3、無音7、その他の6要素に振り分けます。これはデジタル化であり、コード化です。この時点では、まだモールス信号の言語や、「A」だとか「イ」だとかは分かりません。なお、「その他」というのは、本来のモールス信号以外の、たとえば「長さ10の音」などが紛れ込んだときのためです。

    ・次に、この6要素に対する「辞書」を用意します。つまり「短音、無音1、長音、{無音1ないし3ないし7}なら「A」ないし「イ」という対応表です。

    ・そして、有限要素オートマトンとして(実際には何かのプログラミング言語で)、要素の組み合わせを解析して、「A、文字区切り、N、単語区切り。。。」などと組み立てていくことになります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません