- ベストアンサー
文字って数字で表現・・・
文字って数字で表現できるのでしょうか? 回答お願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
★文字コードについて >文字って数字で表現できるのでしょうか? ↑ この表現は 『文字列って数値でも表現できるのでしょうか?』 という事ですよね。多分。 ・そうなるとコンピュータで『文字』を表現するにはどうなのか? という事にも繋がりますね。 コンピュータでは『数値』を扱うようになっているのためそのままでは 文字を扱えません。そこで『文字』に番号を振ってその番号で処理する ような仕組みになります。このときの番号を『文字コード』と言います。 ・『文字コード』にはたくさんの種類があります。 代表的なものとして ASCIIコード JISコード シフトJISコード EUC-JPコード Unicodeコード EBDICコード などがあります。詳しくはネット検索して下さい。または次のリンクをどうぞ。 http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89 ・今回は ASCII コードを代表して説明します。 ASCII コードは半角文字のことで数字(0-9)、英大文字(A-Z)、英小文字(a-z)や 記号などがあります。あと日本では半角カタカナも含まれます。→ANK コード このコード体系では '0'という文字は 0x30(48) という数値 'A'という文字は 0x41(65) という数値 'a'という文字は 0x61(97) という数値 '!'という文字は 0x21(33) という数値 と決められています。 ※()内は10進数での数値を表す。 ・上記のことを踏まえると char name[] = "NaNaNa_sun"; という文字列は char 型の配列で次のようになります。 name[0] = 'N'; name[1] = 'a'; name[2] = 'N'; name[3] = 'a'; name[4] = 'N'; name[5] = 'a'; name[6] = '_'; name[7] = 's'; name[8] = 'u'; name[9] = 'n'; name[10] = '\0'; ※'N'というのは文字定数(リテラル)の表現です。 ↓ 上記の文字列を文字定数ではなく数値(16進数)で表現すると name[0] = 0x4E; name[1] = 0x61; name[2] = 0x4E; name[3] = 0x61; name[4] = 0x4E; name[5] = 0x61; name[6] = 0x5F; name[7] = 0x73; name[8] = 0x75; name[9] = 0x6E; name[10] = 0x00; とすることができます。ちょっと文字列のイメージができませんね。 そこで普段は文字コード'N'や'a'で表現するのが一般です。 ・C 言語では文字列をダブルクォーテーション文字で囲んで "NaNaNa_sun" と 表現する決まりになります。1文字だけなら char moji = 'A'; ともします。 ・以上。簡単ですが文字列と文字コードでした。
その他の回答 (5)
- Tetralemma
- ベストアンサー率54% (57/104)
「文字を数値で表現」できます。表現方法はまちまちです。 Shift_JISの文字'A'であれば、数値(10進数)で65です。 2進数では、01000001 16進数では、41(41では10進数と紛らわしいので&H41とか、0x41などと表します。)
お礼
回答ありがとうございました。
- zwi
- ベストアンサー率56% (730/1282)
あれ? 私の問題から生じた疑問ですかね? char型は、数値変数で1バイトの符号付き数値を扱えます。値は-128~127です。これはOKですか? しかしながら、文字を代入することができます。 char a; a='B'; ですね。 これは、コンピュータ内部で文字を数値コードで扱っているからです。 これが文字コード(文字の数値コード)表です。 http://e-words.jp/p/r-ascii.html ですから、こんなこともできます。 char a,b; a='B'; b=66; printf("a=%c b=%c\n",a,b); printf("a=%d b=%d\n",a,b); を実行すると a=B b=B a=66 b=66 と表示されます。 最後に「文字の扱い方」を参考にしてください。 http://homepage3.nifty.com/mmgames/c_guide/14-01.html
お礼
そうですけど・・・これは使わないのかな? けど、こういう感じじゃないととけないような・・・というかどう考えても僕じゃ無理だったんです。 使い方まで教えてくれて感謝です。感激です。雨あられです。 これで挑戦してみます。 では、また問題を出題している方に何か書き込むかもしれないので、そのときはよろしくお願いします。 回答ありがとうございました。
- jacta
- ベストアンサー率26% (845/3158)
> 文字って数字で表現できるのでしょうか? 微妙な表現ですね。まずは質問の意味から考えてみましょう。 「文字」というのは、#2の回答にもあるように図形のことですね。「数字」というのは「数」を表す「文字」のことです。 ということは、 0 0 0 00000 0 0 「A」を「0」を使って上のように表現できるか? という意味になります。上で出来ているように、結論をいえば出来ますが、質問の意味は本当にこういうことなのでしょうか?
お礼
いいえ違います・・・僕の書き方が悪かったようです。 そういう解釈の仕方もあるということに気づかなかった。これはこれで勉強になりました。 回答ありがとうございました。
- TT414
- ベストアンサー率18% (72/384)
>文字って数字で表現できるのでしょうか? 数字で表現しています。 私の知る限り、コンピュータは文字を直接扱えません、数字に直して(キーボードコントローラなどで変換)入力し、内部では数字で扱い、活字式タイプライターなどに出力する時に数字を文字に変換します、ディスプレー、またはレーザプリンタ、インクジェットプリンタに出力の時は数字を文字の形の図形に変換し(図形も数字です)図形を表示しています。
お礼
これも別の分野で勉強になります。 図形も数字ですか・・・パソコンって計算機って意味というのは、まんざらではないですね。 回答ありがとうございました。
- mimu7777
- ベストアンサー率9% (2/21)
アスキーコード等で表現できると思いますが。 数値の羅列と文字の対応が一つの表になっています。
お礼
かなり丁寧に書いてくれましたね。ひそかに(かはわからないけど)私の名前で作ってくれて。 とってもわかりやすかったです。 これで、また一歩プログラマーへの道が開けた(とっても小さいけどね) 回答ありがとうございました。