スライド 1

名古屋大学工学部電気電子・情報工学科電気電子工学コース
電気電子数学および演習
─ 数値解析 ─
(補足資料)
1
符号なし整数表現
unsigned char
unsigned short
unsigned int
unsigned long
1バイト = 8ビット (8桁の0,1の並び)
2バイト = 16ビット (16桁の〃)
4バイト = 32ビット (32桁の〃)
8バイト = 64ビット (64桁の〃)
符号付き整数表現
char
short
int
long
1バイト = 8ビット (8桁の0,1の並び)
2バイト = 16ビット (16桁の〃)
4バイト = 32ビット (32桁の〃)
8バイト = 64ビット (64桁の〃)
2
2の補数表現の例 (4ビットの場合)
-8~7 の2の補数表現
0:
1:
2:
3:
4:
5:
6:
7:
0000
0001
0010
0011
0100
0101
0110
0111
−1 :
−2 :
−3 :
−4 :
−5 :
−6 :
−7 :
−8 :
1111
1110
1101
1100
1011
1010
1001
1000
負の数の「2 の補数」は
その絶対値の二進数
の 0 と1 を反転させて
1 を加えたものである
<-3 の2の補数の求め方>
0011 (3の二進数)
↓ 0,1反転
1100
↓ 1を足す
1101 (-3の2の補数)
3
浮動小数点表現
float
double
4バイト = 32ビット (32桁の0,1の並び)
8バイト = 64ビット (64桁の0,1の並び)
符号部 1ビット
0 00100…0 01001000000000000…00
指数部
float: 8ビット
double: 11ビット
仮数部
float: 23ビット
double: 52ビット
4
浮動小数点表現の例 (float型の場合)
float 型は 4バイト= 32ビット (32桁の0,1の並び)
符号部 1ビット
(+は0, -は1で表現)
0 00001110 10110000001100000010100
指数部 8ビット
仮数部 23ビット
(-127~128 の範囲を表現できるが,
実際は127 (ゲタ) が足されて 0~255 で表わされている)
指数部- ゲタ
 -1  1  仮数部  2
 yyyyyyyy  - 127 
  / -  1. xxxxxxxxxxxxxxxxxxxxxxx  2
符号部
2
10
5
浮動小数点表現の例 (float型の場合)
float 型は 4バイト= 32ビット (32桁の0,1の並び)
符号部 1ビット
(+は0, -は1で表現)
0 00001110 10110000001100000010100
指数部 8ビット
仮数部 23ビット
(-127~128 の範囲を表現できるが,
実際は127 (ゲタ) が足されて 0~255 で表わされている)
:指数部が全て0の場合は非正規化数,零を表すので正規化数の表現に使えない
:指数部がすべて1の場合は無限大,非数を表すので正規化数の表現に使えない
絶対値が最小の場合, 指数部,仮数部:00…01, 00…00
絶対値が最大の場合, 指数部,仮数部:11….10, 11…11
6
浮動小数点表現の例 (double型の場合)
double 型は 8バイト= 64ビット (64桁の0,1の並び)
符号部 1ビット
(+は0, -は1で表現)
0 00100…0 0100100000000000000…00
仮数部 52ビット
指数部 11ビット
(-1023~1024の範囲を表現できるが
実際は1023 (ゲタ) が足されて 0~2047 で表わされている)
指数部- ゲタ
 -1  1  仮数部  2
  / -  1. xxxxxxxxxxxxxxxxxxxx
符号部
 yyyyy
x2
y 2 - 102310
7
浮動小数点表現の例 (double型の場合)
double 型は 8バイト= 64ビット (64桁の0,1の並び)
符号部 1ビット
(+は0, -は1で表現)
0 00100…0 0100100000000000000…00
指数部 11ビット
仮数部 52ビット
(-1023~1024の範囲を表現できるが
実際は1023 (ゲタ) が足されて 0~2047 で表わされている)
:指数部が全て0の場合は非正規化数,零を表すので正規化数の表現に使えない
:指数部がすべて1の場合は無限大,非数を表すので正規化数の表現に使えない
絶対値が最小の場合, 指数部:00…01, 00…00
絶対値が最大の場合, 指数部:11….10, 11…11
8
浮動小数点表現 (float 型) の例
1
-1
0.5  1  0.1


1
.
0

2
 2
 2
2
0 01111110 00000000000000000000000
1 1
-1
-0.75  -  1  2   -  0.112  - 1.12  2
2 2 
1 01111110 10000000000000000000000
指数部 -1127 126   01111110
2
ゲタ
9
浮動小数点表現 (float 型) の例
18.3125  16  2  0.25  0.0625
1 1
4
1
 2 2  2  4
2 2
 10010.01012
  1.001001012  24
0 10000011 00100101000000000000000
指数部
4 127 131  100000112
ゲタ
10
浮動小数点表現 (float 型) の例
-32768  -215
 - 1000000000000000.0 2
 - 1.0 2  2
15
1 10001110 00000000000000000000000
指数部
15  127 142  100011102
ゲタ
11
-32768を浮動小数点 float型 (4バイト)で表現
-32768  - 1.0 2  215
110001110 00000000000000000000000
同じ-32768を整数 int型 (4バイト)で表現
00000000000000001000000000000000 (32768の2進数)
 0 と1 を反転
11111111111111110111111111111111 (-32768の1の補数)
 1を加える
11111111111111111000000000000000 (-32768の2の補数)
同じ数字を同じバイト数 (桁数)で表現しても
型によって0,1の並びが異なる.
12