前回は,
問題:適当な実数値をint型, long型, float型, double型に格納し, 16進数形式で表示してみましょう。
ちょっと変更するだけで,
基数の変換方法については本連載第6回を参照して下さい。
- 2.
0 (小手調べに) - 2.
625 (2. 0のときの仮数部との違いに注目) - 1000 (少し大きな数)
- 2 × 103 (プログラム実行時は2e3と入力してください)
- 2.
7182 (ネイピア数)
- (0x66ff0bbd)H
- (0x43889333)H
解説
(1) 連載第7回の問題で作成したソースコードを変更して, 実数型の数値を16進数形式で表示できるようにしてください。
ほんのわずかな変更で目的のソースコードになります。型変換
リスト8.
|
|
---|
(2) 次の数値をfloat型の16進数に筆算で変換してください。その後に, (1) で作成したプログラムを実行して確認してみましょう。double型の変換結果とも比較してください。
1. (2. 0)Dをfloat型の16進数に変換する。
小数点の移動は左へ1桁。
(0000 0000 0000 0000 0000 000)B
(0 1000 0000 0000 0000 0000 0000 0000 000)B
^ ~~~~~~~~~ ****************************
S E M
これを16進数に変換する。変換のため,
(0100 0000 0000 0000 0000 0000 0000 0000)B
(0x 4 0 0 0 0 0 0 0)H
以上のことから,
2. (2. 625)Dをfloat型の16進数に変換する。
小数点の移動は左へ1桁。
(0101 0000 0000 0000 0000 000)B
(0 1000 0000 0101 0000 0000 0000 0000 000)B
^ ~~~~~~~~~ ****************************
S E M
これを16進数に変換する。変換のため,
(0100 0000 0010 1000 0000 0000 0000 0000)B
(0x 4 0 2 8 0 0 0 0)H
以上のことから,
3. (1000)Dをfloat型の16進数に変換する。
小数点の移動は左へ9桁。
(1111 0100 0000 0000 0000 000)B
(0 1000 1000 1111 0100 0000 0000 0000 000)B
^ ~~~~~~~~~ ****************************
S E M
これを16進数に変換する。変換のため,
(0100 0100 0111 1010 0000 0000 0000 0000)B
(0x 4 4 7 a 0 0 0 0)H
以上のことから,