- ベストアンサー
コンピュータは"数字"か「文字」かどうやって!判断
コンピュータは"数字"か「文字」かどうやって!判断しているのですか? C言語でしたら kakaku=1+2/*右側が自動的に3と計算されるのはなぜ・文字と数字の認識はどうやって行っているのですか*/ あくまでの私の憶測ですが!? コンパイラソフトなどをセットアップすると!数字は文字とは違う位置決めをする”数字”としての働きをするように!あらかじめプログラムされているから、数字としての機能する!?だとは思うのですが? ”本当”はどうなんでしょうか? 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>>コンピュータは"数字"か「文字」かどうやって!判断 プログラム言語によりそれは差があります。 基本的にコンピュータは、数字を扱うだけです。人間が書いたプログラムにより、数字として扱うか、文字として扱うかが決まります。 なので、古い言語のCOBOLでは、”1+2”なんて、人間にとっては計算可能なものであっても、そのまま式を与えると、エラーになって停止します。 でも、”1+2”を数式として認識する処理を言語に人間が組み込み、数式として処理できるルーチンを用意しておけば、エラーにならず、”3”という値を返すことが可能になります。 ですから、”どうやって判断しているか”といえば、「数字か文字か判断するルーチンを、人間が用意して、言語に組み込んでいて、それに従ってコンピュータが判断している」ということになります。 なので、人間の組み込んだルーチンがいまいちだと、「これは数式だろう!」というケースでも、文字とみなしてしまい、エラーになることもあるでしょうね。
その他の回答 (4)
- 麻野 なぎ(@asano_nagi)
- ベストアンサー率35% (42/120)
コンピュータが、「文字か数値化判断する」ということは、まずありません。 まず、注意しなければならないのは、誰かが書いた、 kakaku=1+2 というプログラム(の一部)は、いかなる場合でも、「文字と判断」されます。 一般的にソースコードといいますが、プログラムを、「文字として入力」しているわけで、ソースコードは、「文字の集まり」と解釈されます。 そして、Cなら、 kakaku=1+2 と書いた場合の、 1 や 2 は、「(整数型の)数値定数を表す」ということに、Cの規則で決まっています。 ですから、プログラムが「コンパイルされるとき」に、「ここに書いてある 1 や 2 という『文字』は、本来、数値を表現したくて書かれているのだ」と判断されて(上述したように、Cの規則では、こう書いたときには数値を表現することになっているので)、文字として書かれているものを、「数値に変換」して、計算します。 一方で、Cのソースで、"1 + 2" と書かれていれば、これは、「文字列を表す」と、Cの規則で決まっていますから、コンパイラは、「この部分は、文字列として扱って欲しい」と判断して、数値に変換せずに処理をします。 こういうわけで、 ・人間が書いたソースコードは、「文字」として扱われます。 ・それの中で、(たとえば、Cの規則で)「数値のつもりで書かれている部分」があれば、コンパイラなどが、「数値に変換」して処理を行います。
お礼
御回答誠にありがとうございました。 A;Cのソースで、"1 + 2" と書かれていれば、これは、「文字列を表す」 そうでしたね^^ 他のA(アンス)に・文字コードで決められているとあります・・ なんとなくわかってきました。
kakaku=1+2; の場合、1+2を計算する機械語命令に直すのは無駄なことなので、コンパイルする前にプリプロセッサが、3に直してしまいます。 要するに、本格的に機械語に直す前に、下処理をする機能があるのです。 Cコンパイラの場合は(基本は)ワンパスコンパイラ(ソースを上から下まで順に一回だけ読む)なので、コンパイラとプリプロセッサを兼ねている場合が多いです。
お礼
御回答誠にありがとうございました。 A;コンパイルする前にプリプロセッサが、3に直してしまいます。 要するに、本格的に機械語に直す前に、下処理をする機能があるのです。 プリプロセッサが!?・・いきなり うわーレベル高いっス!
- kamobedanjoh
- ベストアンサー率27% (1021/3686)
手動入力時に、使用者がキー入力操作で指定しています。 キーボードには100以上のキーが配列されています。コンピューター入力回路は、どのキーが押されたかで特定の2進数を発生させ、処理部へ送ります。後はプログラムに従って処理と出力が行われます。 数字か文字かを判断しているのは人間です。 コンピューターは人間の指示(キー操作)に忠実に従って、電脳処理をしているだけです。 入力処理の過程でアスキーコードやユニコードなど、特定の2進数が割り振られます。 キーには半角/全角切り替え、Back Space、Delete、Enter その他、処理命令的機能を割り付けられたものもあります。 コンピューターを便利な道具として活用している主体は、あくまで人間です。
補足
御回答真にありがとうございました^^ A:プログラムに従って処理と出力が行われます。 Q: 新たな疑問ですが!? ここでいうプログラムとは・どこのプログラムのことなのでしょうか! C:言語を動かすとに使用する 1) MinGW 2) MSYS 3) gdb 4) gcc のことなのでしょうか? 宜しくお願いします。
- Willyt
- ベストアンサー率25% (2858/11131)
簡単です。通常文字は8ビット256種類の割り当てが可能です。ですから文字と同等に数字にも特定のビットを割り当ててあるのです。通常は16進数で01 02・・・ です。アルファベットは21から。全角の場合は2バイト 16ビットになりますから漢字や仮名と重複することなく割り当てが可能になりますから混同の心配は全くありません。
お礼
ご回答真にありがとうございました^^ A:8ビット256種類の割り当てが可能 16進数でも16種類なので・楽勝ですね なるほど・コードで仕分され!数字・文字と判断されている・ たぶん
お礼
ご回答真にありがとうございました。 A:※”ルーチン” を、人間が用意して、言語に組み込んでいて、それに従ってコンピュータが判断している」ということになります。 ルーチン判断しているとのことですね^^ ※プロシージャ(手続き)やファンクション(関数)