📜  PHP GMP 函数完整参考(1)

📅  最后修改于: 2023-12-03 15:18:20.076000             🧑  作者: Mango

PHP GMP 函数完整参考

GMP是GNU多精度算术库的简称。它是一个高性能的库,用于任意长度的整数运算。在PHP中,可以使用GMP函数来完成所有的任意长度整数运算。这篇文章将会介绍GMP库中所有的PHP函数,包括输入、输出、算术运算、比较、位运算、随机数生成等。

输入和输出
gmp_init

将一个字符串或整数转换为一个GMP数。如果没有提供进制,则默认为10进制。

$gmp_num = gmp_init("1234567890123456789");
gmp_strval

将一个GMP数转换为字符串。如果没有提供进制,则默认为10进制。

$str_num = gmp_strval($gmp_num);
gmp_intval

将一个GMP数转换为整数。如果超过了PHP的整数范围,则返回它的字符串表示。

$int_num = gmp_intval($gmp_num);
算术运算
gmp_add

将两个GMP数相加。

$sum = gmp_add($gmp_num1, $gmp_num2);
gmp_sub

用第二个GMP数减去第一个GMP数。

$difference = gmp_sub($gmp_num1, $gmp_num2);
gmp_mul

将两个GMP数相乘。

$product = gmp_mul($gmp_num1, $gmp_num2);
gmp_div_q

将第一个GMP数除以第二个GMP数,并返回商。注意,它只返回整除的商。

$quotient = gmp_div_q($gmp_num1, $gmp_num2);
gmp_div_r

将第一个GMP数除以第二个GMP数,并返回余数。

$remainder = gmp_div_r($gmp_num1, $gmp_num2);
gmp_div_qr

将第一个GMP数除以第二个GMP数,并同时返回商和余数。

list($quotient, $remainder) = gmp_div_qr($gmp_num1, $gmp_num2);
gmp_pow

将一个GMP数的幂返回。

$power = gmp_pow($gmp_num, $exponent);
gmp_sqrt

将一个GMP数的平方根返回。如果它不是一个完全平方数,则向下取整到最接近的整数。

$sqrt_num = gmp_sqrt($gmp_num);
gmp_neg

返回一个GMP数的相反数。

$opp_num = gmp_neg($gmp_num);
gmp_abs

返回一个GMP数的绝对值。

$abs_num = gmp_abs($gmp_num);
比较
gmp_cmp

比较两个GMP数。如果第一个数比第二个数小,返回-1;如果它们相等,返回0;如果第一个数比第二个数大,返回1。

$cmp_result = gmp_cmp($gmp_num1, $gmp_num2);
gmp_sign

返回一个GMP数的符号。如果它是一个负数,返回-1;如果它是一个正数,返回1;如果它是0,返回0。

$sign_num = gmp_sign($gmp_num);
位运算
gmp_and

计算两个GMP数的按位与。

$and_result = gmp_and($gmp_num1, $gmp_num2);
gmp_or

计算两个GMP数的按位或。

$or_result = gmp_or($gmp_num1, $gmp_num2);
gmp_xor

计算两个GMP数的按位异或。

$xor_result = gmp_xor($gmp_num1, $gmp_num2);
gmp_com

计算一个GMP数的按位反。

$com_result = gmp_com($gmp_num);
gmp_setbit

将一个GMP数的指定位设置为1。

$bit_num = gmp_setbit($gmp_num, $bit_index);
gmp_clrbit

将一个GMP数的指定位设置为0。

$bit_num = gmp_clrbit($gmp_num, $bit_index);
gmp_scan0

返回一个GMP数的从右往左第一个0的位数,从0开始计数。如果它是1,则返回这个数的二进制位数。

$zero_bit = gmp_scan0($gmp_num);
gmp_scan1

返回一个GMP数的从右往左第一个1的位数,从0开始计数。如果它是0,则返回这个数的二进制位数。

$one_bit = gmp_scan1($gmp_num);
随机数生成
gmp_rand

生成一个随机的GMP数。

$rand_num = gmp_rand();
gmp_random_seed

设置一个随机生成器的种子。

gmp_random_seed($seed);