変数

Empty/Empty

空の状態を表す。空の配列を宣言したときの初期値。

Null/Null

2バイト整数(符号付)/SmallInt

範囲
-32,767 〜 32,768(\(-2^{15}-1\) ~ \(2^{15}\))

4バイト整数(符号付)/Integer

範囲
-2,147,483,648 ~ 2,147,483,647(\(-2^{31}-1\) ~ \(2^{31}\))

単精度浮動小数点値/Single

\[(-1)^{\mathrm{sign}} \times 2^{\mathrm{exponent} – \mathrm{exponent}\ \ \mathrm{bias}} \times 1.\mathrm{mantissa}\]
  1. \(\mathrm{sign}:符号\)
  2. \(\mathrm{exponent}:指数部\)
  3. \(\mathrm{exponent} \mathrm{bias}:指数部バイアス\)
  4. \(\mathrm{mantissa}:仮数部\)
\[1.xxxxxxxxxxxxxxxxxxxxxxx\times{2^{yyyyyyyy}}_{(2)}\]
  1. \(xxx:仮数部\)
  2. \(yyy:指数部\)
符号ビット
1ビット
指数部の幅
8ビット(ゲタ履き表現)
仮数部の幅
23ビット

符号ビットは表現する数値の符号(正負)を示します。指数部は8ビットで、符号なし整数として見た場合は0~255の値をとり、0のときは0か非正規化数であることを、1~254のときは-127のゲタ履き(バイアス付き)表現で-126~127の指数を、255のときは無限大またはNaNであることを示します。

指数部が0(0および非正規化数)の場合を除き、仮数部で表現されるビットパターンのさらにひとつ上の桁に暗黙の1のビットがあるとみなす表現法(ケチ表現)により、正規化された数の制度は、24ビットである。十進に換算したときに表現できる桁数は\(\log_{10} 2^{24} \approx 7.225\)桁となります。

指数部の符号化方式

単精度浮動小数点数の指数部はオフセット(ゲタ履き)表現を使って符号化されており、指数値が0のときオフセット値(バイアス値)は127である。

  1. \(E_{min}=01_{H}-7F_{H}=-126\)
  2. \(E_{max}=FE_{H}-7F_{H}=127\)
  3. \(exponent\ \ bias(指数バイアス)={7F}_{H}=127\)

\(00_{H}\)と\(FF_{H}\)は予約された指数値です。

負の値
\({-3.40282339717\times10^{38}}_{(10)}\) ~ \({-1.1754944\times10^{-38}}_{(10)}\)
正の値
\({1.1754944\times10^{-38}}_{(10)}\) ~ \({3.40282339717\times10^{38}}_{(10)}\)

正の最小値(単精度)

単精度浮動小数点数 正の最小値
符号
+1
仮数部
\(1.00000000000000000000000_{(2)}={2^{0}}_{(10)}=1.0_{(10)}\)
指数部
\({2^{1-127}}_{(10)}={2^{-126}}_{(10)}\)=\({\frac{1}{2^{126}}}_{(10)}\)=\({1.1754944\times10^{-38}}_{(10)}\)
符号×仮数部×指数部
\(+1 \times 1.0 \times 1.1754944 \times 10^{-38}\)=\({1.1754944 \times 10^{-38}}_{(10)}\)
\[ \begin{eqnarray} value_{min}&=&(-1)^{0} \times 2^{1-127} \times 1 \\ &=&1 \times 2^{-126} \times 1 \\ &=&1.175494351 \times 10^{-38} \end{eqnarray} \]

正の最大値(単精度)

単精度浮動小数点数 正の最大値 \[2^{0},2^{-1},2^{-2},…,2^{-23}\]
  1. \(初項:a=1\)
  2. \(公比:r=0.5\)
  3. \(項数:n=24\)
仮数部
\(S=\frac{a(1-r^{n})}{1-r}=\frac{1-0.5^{24}}{1-0.5}=\frac{1-0.5^{24}}{0.5}={1.99999988079}_{(10)}\)
指数部
\({2^{254-127}}_{(10)}={2^{127}}_{(10)}\)=\({1.7014118\times10^{38}}_{(10)}\)
仮数部×指数部
\(1.99999988079\times1.7014118\times10^{38}\)=\({3.40282339717\times10^{38}}_{(10)}\)
\[ \begin{eqnarray} value_{max}&=&(-1)^{0} \times 2^{2^{8}-127} \times 1.99999988079 \\ &=&1 \times 2^{254-127} \times 1.99999988079 \\ &=&3.4028235 \times 10^{38} \end{eqnarray} \]

負の最小値(単精度)

単精度浮動小数点数 負の最小値
符号
-1
仮数部
\(S=\frac{a(a-r^{n})}{1-r}=\frac{1-0.5^{24}}{1-0.5}=\frac{1-0.5^{24}}{0.5}=1.99999988079_{(10)}\)
指数部
\({2^{254-127}}_{(10)}={2^{127}}_{(10)}=1.7014118 \times {10^{38}}_{(10)}\)
符号×仮数部×指数部
\(-1 \times 1.99999988079 \times 1.7014118 \times 10^{38}=-3.4282339717 \times {10^{38}}_{(10)}\)
\[ \begin{eqnarray} value_{min}&=&(-1)^{1} \times 2^{254-127} \times 1 \\ &=&-1 \times 2^{127} \times 1 \\ &=&-3.4028235 \times 10^{38} \end{eqnarray} \]

負の最大値(単精度)

単精度浮動小数点数 負の最大値
符号
-1
仮数部
\(1.00000000000000000000000_{(2)}={2^{0}}_{(10)}=1.0_{(10)}\)
指数部
\({2^{1-127}}_{(10)}={2^{-126}}_{(10)}\)=\({\frac{1}{2^{126}}}_{(10)}\)=\({1.1754944\times10^{-38}}_{(10)}\)
符号×仮数部×指数部
\(-1 \times 1.0 \times 1.1754944 \times 10^{-38}\)=\({1.1754944 \times 10^{-38}}_{(10)}\)
\[ \begin{eqnarray} value_{max}&=&(-1)^{1} \times 2^{1-127} \times 1 \\ &=&-1 \times 2^{-126} \times 1 \\ &=&-1.175494351 \times 10^{-38} \end{eqnarray} \]

倍精度浮動小数点値/Double

-1.79769313486232E+308 ~ -4.94065645841247E-324(負の値)
4.94065645841247E-324 ~ 1.79769313486232E+308(正の値)
\[(-1)^{\mathrm{sign}} \times 2^{\mathrm{exponent} – \mathrm{exponent}\ \ \mathrm{bias}} \times 1.\mathrm{mantissa}\]
  1. \(\mathrm{sign}:符号\)
  2. \(\mathrm{exponent}:指数部\)
  3. \(\mathrm{exponent} \mathrm{bias}:指数部バイアス\)
  4. \(\mathrm{mantissa}:仮数部\)
符号
1ビット
指数部(ゲタ履き表現)
11ビット(-1022~1023)
仮数部
52ビット
負の値
正の値
\({1.7976932\times10^{308}}_{(10)}\)

指数部の符号化方式

倍精度浮動小数点数の指数部はオフセット(ゲタ履き)表現を使って符号化されており、指数値が0のときオフセット値(バイアス値)は1023である。

  1. \(E_{min}=01_{H}-3FF_{H}=-1022\)
  2. \(E_{max}=7FE_{H}-3FF_{H}=1024\)
  3. \(exponent\ \ bias(指数バイアス)={3FF}_{H}=1023\)

\(00_{H}\)と\(FF_{H}\)は予約された指数値です。

正の最小値(倍精度)

倍精度浮動小数点数 正の最小値
符号
+1
仮数部
\(2^{0}\times1+2^{-1}\times0+2^{-2}\times0+2^{-3}\times0+…+2^{-52}\times0=2.0\)
指数部
\({2^{1-1023}}_{(10)}={2^{-1022}}_{(10)}=2.225074 \times 10^{-308}\)
符号×仮数部×指数部
\(+1 \times 2.0 \times 2.225074 \times 10^{-308}=4.450148 \times 10^{-308}\)
\[ \begin{eqnarray} value_{min}&=&(-1)^{0} \times 2^{1-1023} \times 2 \\ &=&1 \times 2^{-1022} \times 2 \\ &=&4.450148 \times 10^{-308} \\ \end{eqnarray} \]

正の最大値(倍精度)

倍精度浮動小数点数 正の最大値
符号
+1
仮数部
\[2^{0} \times 1, \quad 2^{-1} \times 1, \quad 2^{-2} \times 1, \quad 2^{-3} \times 1, \quad …, \quad 2^{-52} \times 1\] \[S=\frac{a(1-r^n)}{1-r}=\frac{1 \times (1-0.5^{53})}{1-0.5}=2.0\]
指数部
\({2^{2046-1023}}_{(10)}={2^{1023}}_{(10)}=8.988466\times10^{307}\)
符号×仮数部×指数部
\(+1 \times 2.0\times8.988466\times10^{307}=1.7976932\times10^{308}\)
\[ \begin{eqnarray} value_{max}&=&(-1)^{0} \times 2^{2046-1023} \times 2 \\ &=&1 \times 2^{1023} \times 2 \\ &=&1.7976932 \times 10^{308} \\ \end{eqnarray} \]

負の最小値(倍精度)

倍精度浮動小数点数 負の最小値
符号
-1
仮数部
\[2^{0} \times 1, \quad 2^{-1} \times 1, \quad 2^{-2} \times 1, \quad 2^{-3} \times 1, \quad …, \quad 2^{-52} \times 1\] \[S=\frac{a(1-r^n)}{1-r}=\frac{1 \times (1-0.5^{53})}{1-0.5}=2.0\]
指数部
\({2^{2046-1023}}_{(10)}={2^{1023}}_{(10)}=8.988466\times10^{307}\)
符号×仮数部×指数部
\(-1 \times 2.0\times8.988466\times10^{307}=-1.7976932\times10^{308}\)
\[ \begin{eqnarray} value_{min}&=&(-1)^{1} \times 2^{2046-1023} \times 2 \\ &=&-1 \times 2^{1023} \times 2 \\ &=&-1.7976932 \times 10^{308} \\ \end{eqnarray} \]

負の最大値(倍精度)

倍精度浮動小数点数 負の最大値
符号
-1
仮数部
\(2^{0}\times1+2^{-1}\times0+2^{-2}\times0+2^{-3}\times0+…+2^{-52}\times0=2.0\)
指数部
\({2^{1-1023}}_{(10)}={2^{-1022}}_{(10)}=2.225074 \times 10^{-308}\)
符号×仮数部×指数部
\(-1 \times 2.0 \times 2.225074 \times 10^{-308}=-4.450148 \times 10^{-308}\)
\[ \begin{eqnarray} value_{max}&=&(-1)^{1} \times 2^{1-1023} \times 2 \\ &=&-1 \times 2^{-1022} \times 2 \\ &=&-4.450148 \times 10^{-308} \\ \end{eqnarray} \]

通貨型/Currency

-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807

日付型/Date

範囲
-657,434 ~ 2,958,465(100/01/01 ~ 9999/12/31)
PRINT VARTYPE(-657434, VAR_DATE) // 100/01/01 PRINT VARTYPE(2958465, VAR_DATE) // 9999/12/31

オブジェクト/Dispatch

エラー値/Error

ブール型/Boolean

バリアント/Variant

未定義のオブジェクト/Unknown

1バイト整数(符号付き)/SByte

-128 ~ 127

1バイト整数(符号なし)/Byte

0 ~ 255

2バイト整数(符号なし)/Word

0 ~ 65,535

4バイト整数(符号なし)/DWord

0 ~ 4,294,967,295

8バイト整数(符号付き)/Int64

-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

ANSI文字列/AStr

UNICODE文字列/UStr

配列/Array

データ型 範囲
Empty/Empty
Null/Null
2バイト整数(符号付)/SmallInt -32,767~32,768
4バイト整数(符号付)/Integer -2,147,483,648 ~ 2,147,483,647
単精度浮動小数点値/Single -3.402823E+38 ~ -1.401298E-45(負の値)
1.401298E-45 ~ 3.402823E+38(正の値)
倍精度浮動小数点値/Double -1.79769313486232E+308 ~ -4.94065645841247E-324(負の値)
4.94065645841247E-324 ~ 1.79769313486232E+308(正の値)
通貨型/Currency -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807
日付型/Date -657,434 ~ 2,958,465(100/01/01 ~ 9999/12/31)
オブジェクト/Dispatch
エラー値/Error
ブール型/Boolean
バリアント/Variant
未定義のオブジェクト/Unknown
1バイト整数(符号付き)/SByte -128 ~ 127
1バイト整数(符号なし)/Byte 0 ~ 255
2バイト整数(符号なし)/Word 0 ~ 65,535
4バイト整数(符号なし)/DWord 0 ~ 4,294,967,295
8バイト整数(符号付き)/Int64 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
ANSI文字列/AStr
UNICODE文字列/UStr
配列/Array

この記事は役に立ちましたか?
役に立った 役に立たなかった