2024年PHP开发者大会日本站

预定义常量

以下常量由此扩展定义,只有在将扩展编译到PHP中或在运行时动态加载时才可用。

GMP_ROUND_ZERO (int)
GMP_ROUND_PLUSINF (int)
GMP_ROUND_MINUSINF (int)
GMP_MSW_FIRST (int)
GMP_LSW_FIRST (int)
GMP_LITTLE_ENDIAN (int)
GMP_BIG_ENDIAN (int)
GMP_NATIVE_ENDIAN (int)
GMP_VERSION (string)
GMP库版本
GMP_MPIR_VERSION (string)
MPIR库版本。
添加注释

用户贡献的注释 2条注释

i at tiankonguse dot com
11年前
当我使用var_dump输出这些常量时,值如下:
GMP_ROUND_ZERO 0
GMP_ROUND_PLUSINF 1
GMP_ROUND_MINUSINF 2
GMP_VERSION "5.0.2"
AnonyMouse At Do Not Mail Me Dot Com
4年前
这是一个表格,显示了在小端64位平台上,给定gmp_init(0x0123456789ABCDEF)和各种输入参数时gmp_export的输出。
注意,表中的下划线用于说明“字”之间的分隔(可以是char、short、int或long)。

+-----------+-----+--------+-------------------------+
| 字节大小 | 符号位 | 字节序 | gmp_export 十六进制结果 |
+-----------+-----+--------+-------------------------+
| 1字节 | 最高有效位 | 小端 | 01_23_45_67_89_AB_CD_EF |
+-----------+-----+--------+-------------------------+
| 1字节 | 最高有效位 | 大端 | 01_23_45_67_89_AB_CD_EF |
+-----------+-----+--------+-------------------------+
| 1字节 | 最低有效位 | 小端 | EF_CD_AB_89_67_45_23_01 |
+-----------+-----+--------+-------------------------+
| 1字节 | 最低有效位 | 大端 | EF_CD_AB_89_67_45_23_01 |
+-----------+-----+--------+-------------------------+
| 2字节 | 最高有效位 | 小端 | 2301_6745_AB89_EFCD |
+-----------+-----+--------+-------------------------+
| 2字节 | 最高有效位 | 大端 | 0123_4567_89AB_CDEF |
+-----------+-----+--------+-------------------------+
| 2字节 | 最低有效位 | 小端 | EFCD_AB89_6745_2301 |
+-----------+-----+--------+-------------------------+
| 2字节 | 最低有效位 | 大端 | CDEF_89AB_4567_0123 |
+-----------+-----+--------+-------------------------+
| 4字节 | 最高有效位 | 小端 | 67452301_EFCDAB89 |
+-----------+-----+--------+-------------------------+
| 4字节 | 最高有效位 | 大端 | 01234567_89ABCDEF |
+-----------+-----+--------+-------------------------+
| 4字节 | 最低有效位 | 小端 | EFCDAB89_67452301 |
+-----------+-----+--------+-------------------------+
| 4字节 | 最低有效位 | 大端 | 89ABCDEF_01234567 |
+-----------+-----+--------+-------------------------+
| 8字节 | 最高有效位 | 小端 | EFCDAB8967452301 |
+-----------+-----+--------+-------------------------+
| 8字节 | 最高有效位 | 大端 | 0123456789ABCDEF |
+-----------+-----+--------+-------------------------+
| 8字节 | 最低有效位 | 小端 | EFCDAB8967452301 |
+-----------+-----+--------+-------------------------+
| 8字节 | 最低有效位 | 大端 | 0123456789ABCDEF |
+-----------+-----+--------+-------------------------+
查看完整表格请访问 https://pastebin.com/2GX4L3dq

我的结论和推论
* gmp_export似乎会去除符号数据,就像调用gmp_abs($gmp_resource)一样。
* MSW可能代表最高有效位(顺序),因为最高有效位(最高位数字)的字先出现。
\- “字”是由$word_size参数确定的数值类型(char、short、int或long)。
* LSW可能代表最低有效位(顺序),因为最低有效位(最低位数字)的字先出现。
* 字节序只有在使用大于1的字大小(word size)时才重要,因为字大小为1时,每个字节都会被复制。字大小为2时,每个short都会被复制。4是int。当复制大于一个字节的数字时,字节序很重要,因为它会改变单元大小内字节的顺序。一个2字节的short会根据字节序交换其字节,但每个字节中的位将保持不变。

此注释太长而无法发布,因此我不得不移动代码以生成上面的表格到 https://pastebin.com/gWLU4GF8
To Top