ショッピングモール  レギュラー(エスプレッソ用)  レギュラー(フレーバーコーヒー)


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5241

演習問題7-2問3 の解答例について質問
投稿者---えんりけ(2006/01/06 21:01:15)


「第7章標準ライブラリ関数」7-2文字処理関数の演習、問題3 の解答を見て、わからない点があります。
プログラムの20行目に、「10進数に変換」とあり、
x=x*16+str[i]-'0'
と書かれています。
また、16進数のアルファベット表記の10進数変換は、
27行目によると、
x=x*16+str[i]-'a'+10
とあります。
なぜ、このような計算式になるのでしょうか?
問3の実行例として書いてある"AB45"を例にして説明していただけないでしょうか?
よろしくお願いいたします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:演習問題7-2問3 の解答例について質問 5242 まきじ 2006/01/07 00:20:14


No.5242

Re:演習問題7-2問3 の解答例について質問
投稿者---まきじ(2006/01/07 00:20:14)


>x=x*16+str[i]-'0'

str[i] - '0' で数値にしてます。

>x=x*16+str[i]-'a'+10

str[i] は 'a' から 'f' のいずれかで
str[i] - 'a' + 10 によって 10 から 15 の数値にしてます。

大きい位の方から 10 進数に直してるので
前回の結果(x の値)を 16 倍する事で位を合わせる。

>問3の実行例として書いてある"AB45"を例にして説明していただけないでしょうか?

16^3 の位
0 * 16 + 'a' - 'a' + 10 = 10
16^2 の位
10 * 16 + 'b' - 'a' + 10 = 171
16^1 の位
171 * 16 + '4' - '0' = 2740
16^0 の位
2740 * 16 + '5' - '0' = 43845


この投稿にコメントする

削除パスワード

No.5245

Re:演習問題7-2問3 の解答例について質問
投稿者---えんりけ(2006/01/08 00:03:32)


まきじさん
回答ありがとうございました。
なんとなくですが、ぼんやりとした理解ができてきました。
以下の文例がまだ理解できていないので、もう少し繰り返し読ませて
いただき、それでもわからなかった時には、再度質問させてください。
あまりwebを見る時間の余裕がないものですから、レスが遅くなって
しまい、すみません。
取り急ぎ、感謝の報告をさせていただきます。
ありがとうございました。

>大きい位の方から 10 進数に直してるので
>前回の結果(x の値)を 16 倍する事で位を合わせる。
>
>>問3の実行例として書いてある"AB45"を例にして説明していただけないでしょうか?
>
>16^3 の位
>0 * 16 + 'a' - 'a' + 10 = 10
>16^2 の位
>10 * 16 + 'b' - 'a' + 10 = 171
>16^1 の位
>171 * 16 + '4' - '0' = 2740
>16^0 の位
>2740 * 16 + '5' - '0' = 43845



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity