Binary 什么是excess-65指数格式?
根据IBM Informix文档:Binary 什么是excess-65指数格式?,binary,decimal,storage,informix,exponent,Binary,Decimal,Storage,Informix,Exponent,根据IBM Informix文档: DECIMAL(p,s)值在内部存储,第一个字节表示符号位,7位指数为excess-65格式 “超65”格式是如何工作的 工具书类 该符号是特定于Informix及其十进制和货币类型的——AFAIK,没有其他产品使用它。Informix还在其DATETIME和INTERVAL类型中使用它,但这在很大程度上是一个实现细节 我一直知道磁盘上的表单是'excess-64'而不是'excess-65';我不确定哪一个是正确的,但我认为64有一个坚实的基础 “过剩-
DECIMAL(p,s)
值在内部存储,第一个字节表示符号位,7位指数为excess-65格式
“超65”格式是如何工作的
工具书类
该符号是特定于Informix及其十进制和货币类型的——AFAIK,没有其他产品使用它。Informix还在其DATETIME和INTERVAL类型中使用它,但这在很大程度上是一个实现细节 我一直知道磁盘上的表单是'excess-64'而不是'excess-65';我不确定哪一个是正确的,但我认为64有一个坚实的基础 “过剩-6n”表格用于磁盘存储。它的好处是,可以使用
memcmp()
比较磁盘格式中的两个十进制值,以获得正确的比较(尽管空值必须单独处理-空值总是会引起痛苦和悲伤)
ESQL/C(和C-ISAM)的decimal.h
标题包含以下信息:
/*
* Packed Format (format in records in files)
*
* First byte =
* top 1 bit = sign 0=neg, 1=pos
* low 7 bits = Exponent in excess 64 format
* Rest of bytes = base 100 digits in 100 complement format
* Notes -- This format sorts numerically with just a
* simple byte by byte unsigned comparison.
* Zero is represented as 80,00,00,... (hex).
* Negative numbers have the exponent complemented
* and the base 100 digits in 100's complement
*/
注意提到64而不是65。还请注意,“十进制”在某些方面是一个用词不当的词;数据使用“百分位”(base-100)表示法表示
下面是一些示例值、十进制表示,然后是磁盘格式的字节。请注意,在某种程度上,字节数是任意的。如果使用类似于十进制(16,4)的东西,将有1字节的符号和指数以及8字节的数据(指数的范围将受到限制)。如果使用十进制(16)表示浮点,那么指数的范围就不那么有限了
Decimal value Byte representation (hex)
0 80 00 00 00 00
1 C1 01
-1 3E 63
9.9 C1 09 5A 00
-9.9 3E 5A 0A 00
99.99 C1 63 63 00 00 00
-99.99 3E 00 01 00 00 00
999.999 C2 09 63 63 5A
-999.999 3D 5A 00 00 0A
0.1 C0 0A 00 00
-0.1 3F 5A 00 00
0.00012345 BF 01 17 2D 00
-0.00012345 40 62 4C 37 00
1.2345678901234e-09 BC 0C 22 38 4E 5A 0C 22
-1.2345678901234e-09 43 57 41 2B 15 09 57 42
1.2345678901234e+09 C5 0C 22 38 4E 5A 0C 22
-1.2345678901234e+09 3A 57 41 2B 15 09 57 42
等等。该符号是特定于Informix及其十进制和货币类型的——好吧,没有其他产品使用它。Informix还在其DATETIME和INTERVAL类型中使用它,但这在很大程度上是一个实现细节 我一直知道磁盘上的表单是'excess-64'而不是'excess-65';我不确定哪一个是正确的,但我认为64有一个坚实的基础 “过剩-6n”表格用于磁盘存储。它的好处是,可以使用
memcmp()
比较磁盘格式中的两个十进制值,以获得正确的比较(尽管空值必须单独处理-空值总是会引起痛苦和悲伤)
ESQL/C(和C-ISAM)的decimal.h
标题包含以下信息:
/*
* Packed Format (format in records in files)
*
* First byte =
* top 1 bit = sign 0=neg, 1=pos
* low 7 bits = Exponent in excess 64 format
* Rest of bytes = base 100 digits in 100 complement format
* Notes -- This format sorts numerically with just a
* simple byte by byte unsigned comparison.
* Zero is represented as 80,00,00,... (hex).
* Negative numbers have the exponent complemented
* and the base 100 digits in 100's complement
*/
注意提到64而不是65。还请注意,“十进制”在某些方面是一个用词不当的词;数据使用“百分位”(base-100)表示法表示
下面是一些示例值、十进制表示,然后是磁盘格式的字节。请注意,在某种程度上,字节数是任意的。如果使用类似于十进制(16,4)的东西,将有1字节的符号和指数以及8字节的数据(指数的范围将受到限制)。如果使用十进制(16)表示浮点,那么指数的范围就不那么有限了
Decimal value Byte representation (hex)
0 80 00 00 00 00
1 C1 01
-1 3E 63
9.9 C1 09 5A 00
-9.9 3E 5A 0A 00
99.99 C1 63 63 00 00 00
-99.99 3E 00 01 00 00 00
999.999 C2 09 63 63 5A
-999.999 3D 5A 00 00 0A
0.1 C0 0A 00 00
-0.1 3F 5A 00 00
0.00012345 BF 01 17 2D 00
-0.00012345 40 62 4C 37 00
1.2345678901234e-09 BC 0C 22 38 4E 5A 0C 22
-1.2345678901234e-09 43 57 41 2B 15 09 57 42
1.2345678901234e+09 C5 0C 22 38 4E 5A 0C 22
-1.2345678901234e+09 3A 57 41 2B 15 09 57 42
等等。不确定它是否是您要找的,但请检查以下内容:和。不确定它是否是您要找的,但请检查以下内容:和。