Binary 什么是excess-65指数格式?

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有一个坚实的基础 “过剩-

根据IBM Informix文档:

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
    

    等等。

    不确定它是否是您要找的,但请检查以下内容:和。不确定它是否是您要找的,但请检查以下内容:和。