プロが教える店舗&オフィスのセキュリティ対策術

文字って数字で表現できるのでしょうか?

回答お願いします。

A 回答 (6件)

★文字コードについて


>文字って数字で表現できるのでしょうか?
 ↑
 この表現は
 『文字列って数値でも表現できるのでしょうか?』
 という事ですよね。多分。
・そうなるとコンピュータで『文字』を表現するにはどうなのか?
 という事にも繋がりますね。
 コンピュータでは『数値』を扱うようになっているのためそのままでは
 文字を扱えません。そこで『文字』に番号を振ってその番号で処理する
 ような仕組みになります。このときの番号を『文字コード』と言います。
・『文字コード』にはたくさんの種類があります。
 代表的なものとして
 ASCIIコード
 JISコード
 シフトJISコード
 EUC-JPコード
 Unicodeコード
 EBDICコード
 などがあります。詳しくはネット検索して下さい。または次のリンクをどうぞ。
 http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97% …
・今回は 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'; ともします。
・以上。簡単ですが文字列と文字コードでした。

参考URL:http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97% …
    • good
    • 0
この回答へのお礼

かなり丁寧に書いてくれましたね。ひそかに(かはわからないけど)私の名前で作ってくれて。
とってもわかりやすかったです。
これで、また一歩プログラマーへの道が開けた(とっても小さいけどね)

回答ありがとうございました。

お礼日時:2007/07/18 16:27

「文字を数値で表現」できます。

表現方法はまちまちです。
Shift_JISの文字'A'であれば、数値(10進数)で65です。
2進数では、01000001
16進数では、41(41では10進数と紛らわしいので&H41とか、0x41などと表します。)
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2007/07/18 16:29

あれ?


私の問題から生じた疑問ですかね?

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 …
    • good
    • 0
この回答へのお礼

そうですけど・・・これは使わないのかな?
けど、こういう感じじゃないととけないような・・・というかどう考えても僕じゃ無理だったんです。

使い方まで教えてくれて感謝です。感激です。雨あられです。
これで挑戦してみます。
では、また問題を出題している方に何か書き込むかもしれないので、そのときはよろしくお願いします。

回答ありがとうございました。

お礼日時:2007/07/18 16:33

> 文字って数字で表現できるのでしょうか?



微妙な表現ですね。まずは質問の意味から考えてみましょう。
「文字」というのは、#2の回答にもあるように図形のことですね。「数字」というのは「数」を表す「文字」のことです。
ということは、

   0
  0 0
 00000
0     0

「A」を「0」を使って上のように表現できるか? という意味になります。上で出来ているように、結論をいえば出来ますが、質問の意味は本当にこういうことなのでしょうか?
    • good
    • 0
この回答へのお礼

いいえ違います・・・僕の書き方が悪かったようです。

そういう解釈の仕方もあるということに気づかなかった。これはこれで勉強になりました。

回答ありがとうございました。

お礼日時:2007/07/18 16:35

>文字って数字で表現できるのでしょうか?



数字で表現しています。

私の知る限り、コンピュータは文字を直接扱えません、数字に直して(キーボードコントローラなどで変換)入力し、内部では数字で扱い、活字式タイプライターなどに出力する時に数字を文字に変換します、ディスプレー、またはレーザプリンタ、インクジェットプリンタに出力の時は数字を文字の形の図形に変換し(図形も数字です)図形を表示しています。
    • good
    • 0
この回答へのお礼

これも別の分野で勉強になります。

図形も数字ですか・・・パソコンって計算機って意味というのは、まんざらではないですね。

回答ありがとうございました。

お礼日時:2007/07/18 16:38

アスキーコード等で表現できると思いますが。


数値の羅列と文字の対応が一つの表になっています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!