A.変数
Copyright(C) 13May2004 coskx
Copyright(C) 13Jan2003 coskx
TNCT
変数についての解説です。以下の項目で出来ています。
1.初めての変数の型
2.整数型変数と内部表現
3.実数型変数と内部表現
4.文字コード(JISローマ字コード)
APPENDIX 1 整数型変数の内部表現
APPENDIX 2 文字コードに関する補足
APPENDIX 3 日本語文字コード
APPENDIX 4 n進法
A.1 初めての変数の型 |
---|
はじめて出てくる変数はint型とdouble型であろう。より正確な説明はA.2で見ることにして,最初に出会う変数の型としてint型とdouble型を覚えよう。printfはSystem.out.printfと読み替える
変数の型 |
宣言の方法 | 使い方 |
特徴 |
int |
int tokyo,osaka; |
x=1; y=2; z=x+y; printf("%d %d\n",x,y); printf("%x %x\n",x,y); scanf("%d",&tokyo); |
扱える値の範囲は-2147483648から2147483647で,答えがこの範囲を超えるような演算を行なうと,正しい値が求められない。 int型同士の割り算を行なうと少数点以下は切り捨てられる。 int型同士では,x%yの演算でxをyで割った時のあまりを求める演算が定義されている |
double |
double x1,x2; double pp,qq; |
x1=2.0; |
扱える範囲は±1.7E308(±1.7×10308) であり、少なくとも 15
桁の精度がある。 |
double型変数を使用するときの注意
double型変数の内部表現は近似値であるため,0.1を10回たし合わせても1にならない。 class XXXX { ということは,次のプログラムはY=0.0では止まらないループとなる |
double型変数とint型変数のデータ交換
double x=10.5; y=x; |
int x=10; y=x; |
A.2 整数型変数と内部表現 |
---|
変数の型 | 内部表現のバイト数(ビット数) | 値の範囲 |
byte |
1バイト(8ビット) | -128から127 |
short |
2バイト(16ビット) | -32768から32767 |
int |
4バイト(32ビット) | -2147483648から2147483647 |
long | 8バイト(64ビット) | -9223372036854775808から9223372036854775807 |
A.3 実数型変数と内部表現 |
---|
変数の型 |
内部表現のバイト数 |
値の範囲 |
float |
4バイト(32ビット) |
符号 1 ビット,8 ビットの 2 進数の指数 (バイアス分 127 を含む),23 ビットの仮数から成る。仮数は、1.0 と 2.0 の間の数値を表わす。仮数の最上位ビットは常に 1 になるので、このビットは数値に含まれない。 1.175494351 E - 38から3.402823466 E +
38 |
double |
8バイト(64ビット) |
符号 1 ビット,11 ビットの 2 進数の指数(バイアス分 1023 を含む),52 ビットの仮数から成る。仮数は、1.0 と 2.0 の間の数値を表わす。仮数の最上位ビットは常に 1 になるので、このビットは数値に含まれない。 2.2250738585072014 E - 308から1.7976931348623158 E +
308 |
A.4 文字コード(JISローマ字コード) |
---|
コンピュータは文字を直接変数にしまうことが出来ない。そこで,文字を値(文字コード)に変換してしま
うことにしている。
例えば「A」は十進数の65,「B」は66にして変数にしまうことにしている。Javaでは処理系内部でUTF-16の文字コードが使われてお
り,char型変数に16ビットで格納される。UTF-16においても,半角文字(英文字,数字,記号)は以前からあるJISコードやASCIIコードと
同じ値である。
この文字コード(JISローマ字コード)の一覧を次に示す。これらの文字は32〜126の値で出来ているため7ビットの幅で全文字種が定義されている。
文字コード表(JISローマ字コード表)
|
|
|
|
|
|
JISローマ字コード表のもとになったASCIIコード(American Standard Code for
Information Interchange,ISO 646-1991)では文字コード92(5C)の表す文字は「\」ではなく「\」である。またJISローマ字コード(JIS X
0201-1976)では文字コード126(7E)の表す文字は「~」ではなく,(表現できないが「_」を上下反転させたオーバースコア)である。
文字コードに関する補足
20(16進数)以下で重要な制御コードには次のようなものがある
制御コード(16進数) | Java言語での表現 |
意味 |
09 |
'\t' |
タブ |
0A |
'\n' |
改行 |
0D |
'\r' |
行先頭へ,リターン |
1B |
|
escape |
byte型
2進数ビットパターン | 16進数表現 | char型として 10進数として認識 (2の補数表現) |
00000000 |
00 |
0 |
00000001 |
01 |
1 |
00000010 |
02 |
2 |
: |
: |
: |
01111110 |
7E |
126 |
01111111 |
7F |
127 |
10000000 |
80 |
-128 |
10000001 |
81 |
-127 |
10000010 |
82 |
-126 |
: |
: |
: |
11111101 |
FD |
-3 |
11111110 |
FE |
-2 |
11111111 |
FF |
-1 |
short型
2進数ビットパターン | 16進数表現 | short int型として 10進数として認識 (2の補数表現) |
0000000000000000 |
0000 |
0 |
0000000000000001 |
0001 |
1 |
0000000000000010 |
0002 |
2 |
: |
: |
: |
0111111111111110 |
7FFE |
32766 |
0111111111111111 |
7FFF |
32767 |
1000000000000000 |
8000 |
-32768 |
1000000000000001 |
8001 |
-32767 |
1000000000000010 |
8002 |
-32766 |
: |
: |
: |
1111111111111101 |
FFFD |
-3 |
1111111111111110 |
FFFE |
-2 |
1111111111111111 |
FFFF |
-1 |
int型
2進数ビットパターン | 16進数表現 | long int型として 10進数として認識 (2の補数表現) |
00000000000000000000000000000000 |
000000 |
0 |
00000000000000000000000000000001 |
000001 |
1 |
00000000000000000000000000000010 |
000002 |
2 |
: |
: |
: |
01111111111111111111111111111110 |
7FFFFE |
2147483646 |
01111111111111111111111111111111 |
7FFFFF |
2147483647 |
10000000000000000000000000000000 |
800000 |
-2147483648 |
10000000000000000000000000000001 |
800001 |
-2147483647 |
10000000000000000000000000000010 |
800002 |
-2147483646 |
: |
: |
: |
11111111111111111111111111111101 |
FFFFFD |
-3 |
11111111111111111111111111111110 |
FFFFFE |
-2 |
11111111111111111111111111111111 |
FFFFFF |
-1 |
テストプログラム |
class XXXX { |
APPENDIX 3 日本語文字コード |
---|
日本語の文字は文字種が8ビットで表される範囲を超えるため16ビットで表されている。(Unicodeは16ビット〜32ビット)
これまでの情報通信技術の発展の歴史に対応して,現在多くののコード表があり,同じ漢字が複数の異なるコードを持っている。しかし1つの文書ファイル中で異なる文字コードが混在することはない。
(1)UTF-16コード Javaの内部処理で用いられている
あ 3042 い 3044 う 3046
(2)JISコード UNIXワークステーションで用いられている
(3)区点コードあ 2422 い 2424 う 2426
あ 0402 い 0404 う 0406
(4)Shift-JISコード(SJIS) WindowsPC,Macintoshなどで用いられている
あ 82A0 い 82A2 う 82A4
(5)EUCコード UNIXワークステーションで用いられている
あ A4A2 い A4A4 う A4A6
以下にひらがな部分の各文字コード表を示す。
JIS SJIS EUC UTF-16 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 04区 2420 829E A4A0 3040 ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く 04区 2430 82AE A4B0 3050 ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た 04区 2440 82BE A4C0 3060 だ ち ぢ っ つ づ て で と ど な に ぬ ね の は 04区 2450 82CE A4D0 3070 ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み 04区 2460 82DE A4E0 3080 む め も ゃ や ゅ ゆ ょ よ ら り る れ ろ ゎ わ 04区 2470 82EE A4F0 3090 ゐ ゑ を ん ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ |
APPENDIX 4 n進法 |
---|
十進法100までの表
0 1 2 3 4
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
八進法100(十進数の64)までの表
0 1 2 3 4
5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 47 50 51 52 53 54 55 56 57 60 61 62 63 64 65 66 67 70 71 72 73 74 75 76 77 100 |
五進法100(十進数の25)までの表
0 1 2 3
4 10 11 12 13 14 20 21 22 23 24 30 31 32 33 34 40 41 42 43 44 100 |
三進法100(十進数の9)までの表
0 1 2 10 11 12 20 21 22 100 |
二進法100(十進数の4)までの表
0 1 10 11 100 |
十六進法100(十進数の256)までの表
0 1 2 3 4
5 6 7 8 9 A B C D
E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 100 |