- ベストアンサー
コンピュータは"数字"か「文字」かどうやって!判断
- みんなの回答 (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種類なので・楽勝ですね なるほど・コードで仕分され!数字・文字と判断されている・ たぶん
関連するQ&A
- javaScriptで文字列の数字判断について
こんにちは。 神奈川の大学生です。 学校でプログラムを少し勉強しています。 初心者ですが宜しくお願いします。 質問なんですが フォームから文字列を取り出し JAvaScriptでチェックしたいです。 その文字列が例えば”KKK0001”だとして 前から4桁目から数字だと判断したいです。 この数字と文字を分ける(判断する?)には何を使えばよいでしょうか? ずーと考えて調べていますがわかりません。 宜しくお願い致します!
- 締切済み
- JavaScript
- VBA 数字と文字の判断について
VBA 数字と文字の判断について Excel2000を使用しています。 ユーザーフォームのテキストボックスに A00B0.5C-3.0 というように入力してコマンドボタンのOKなどを押すとセルのA1に00 B1に0.5 C1に-3.0 と表示させたいのですが、下記のマクロを使用すると、 A1に00 B1に0 C1に5 D1に3 E1に0 というように、「-」と「.」も文字と認識してしまい分かれて表示されてしまいます。 セルの位置にはこだわりませんが、連続で 00 0.5 -3.0 と表示させるにはどうしたらよろしいでしょうか? Dim re As Object Dim d() As String Set re = CreateObject("VBScript.RegExp") re.Pattern = "¥D+(¥d+)" re.Global = True d = Split(Trim(re.Replace(tx1.Text, "$1 ")), " ") If UBound(d) > 10 Then Selection.Resize(1, UBound(d) + 1) = d Set re = Nothing よろしくお願いします。
- ベストアンサー
- Visual Basic
- 文字列を数字型に変換したい
いつもお世話になっております。 eclipseというツールでC言語のプログラムを触っているのですが、 文字列の数字を数値型に変換して掛け算をしたいのですが、 型変換の関数はありますでしょうか??
- ベストアンサー
- C・C++・C#
- processingの文字入力について
現在、プログラミング言語processingを勉強しているのですが、どのようにプログラムを書いたらいいか分からないので、教えてください。 作ろうとしているのは、フラッシュ暗算を行うプログラムなのですが、 processingの場合は、文字入力するときに、1文字しか認識されませんが、 もし2文字、3文字などを入力したい時は、どのようにすればいいのでしょうか? 例えば、フラッシュ暗算で、合計値が52だったとき、52を入力すると、正解とでるプログラムを作りたいわけですが、おそらく配列を使うと思いますが、いったいどのようにしたら52という数字を配列に格納させればいいのでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- コンピュータって?
ずっと疑問だったけど、私考なんだけど、CPUが500MHZとか CPUの性能を表すけど、これって、添付画像の下の波というか タイミングの回数で、感知する時間、しない時間を1サイクルとして 1秒間に500MHZだったら、1秒間に、0と1を5億回分まで認識出来ますってことでしょうか? また、プログラムでは、なんちゃら言語とかあるけど、これは わかりやすいように言葉(単語)になってるのだとおもうけど { } \ だったり、print だったり、そういう単語や記号を 0011001011(←適当)に変換したのがマシン語だと思うのだけど この0と1だけで、計算したり判断したりできるのがずっと 不思議なんだけど、たとえば、もし、printが0011001011だったと したら、0011001011は印刷をすることと、決められてるのしょうか? それぞれの記号やプログラム単語などには、それぞれに、0と1の 羅列がきめてあり、それに伴った動きをするってことでしょうか? そこが、未だにわからないです。 だとしたら(勝手にこうかな?って思ってるので違うかもしれないけど) プログラムの単語ほどに、0と1の組み合わせがあるってことに なるんでしょうか? だとすると、誰がそれを決めてるんだろう? 新しい用語が増えるたびに、決まるのだろうか?とか もし、そうなら、新しい用語が決まる前のコンピュータは その紐付けがないから動かないとなるとおもうから、 いや、これはやっぱり違うのかなって思っちゃう。 どうして1と0で動きが決まるのかがずっと疑問です。
- ベストアンサー
- 情報工学
- IRIX用のCコンパイラ
C言語で作成したプログラムをOSがIRIX 6.5のコンピューターで使いたいのですが、このコンピューターにはCコンパイラがありません。 IRIX 6.5で使えるCコンパイラ(できればフリー)を、教えてください。 インストールの手順があるとありがたいです。 よろしくお願いします。
- ベストアンサー
- その他(OS)
- 数字をセルの中央に配置して、右側で揃えたい
数字をセルの中央に配置して、右側で揃えたいのですが、できますか? 例えば、セルA1に30.2、セルA2に2.2が入っているとき 中央揃えをすると、上下の数字の小数点の位置が左右にずれます。 小数点の位置を揃えて表示したいのですが、できますか? 2.2を02.2と認識させられれば良いのですが。
- ベストアンサー
- オフィス系ソフト
- アセンブラ言語の数字を数値に変換するプログラム
LD GR3,GR1 ;GR3にGR1の数字を入れる。 AND GR3,=#000F ;数字を数値に変換 というアセンブラのプログラムがあったのですが、なぜGR3と16進数#000Fの論理積をとることで数字を数値に変換できるのでしょうか。 それと、ここでいう数字、数値の違いとは、数字の1はコンピュータ上では 49という数値に変換される(アスキー文字)という認識でよろしいでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- DOSの文字の色を変える方法。
C言語でDOSプログラムを作っているのですが、 文字の色を変えることはできるのでしょうか? #include <stdio.h> void main(){ printf("あいうえお"); } コンパイラはボーランドで、DOSはXPのものとし、 文字を赤くするとしたら上の例ならどのように 書けばよいのでしょう?
- ベストアンサー
- C・C++・C#
お礼
ご回答真にありがとうございました。 A:※”ルーチン” を、人間が用意して、言語に組み込んでいて、それに従ってコンピュータが判断している」ということになります。 ルーチン判断しているとのことですね^^ ※プロシージャ(手続き)やファンクション(関数)