![PHP面试一战到底](https://wfqqreader-1252317822.image.myqcloud.com/cover/891/44509891/b_44509891.jpg)
上QQ阅读APP看书,第一时间看更新
2.2 整型
2.2.1 概念
整型(integer)表示的变量属于所有整数集合Z。
Z={...,−N,−N+1,...,0,1,2,...,N−1,N,...}
整型可表示的数值如表2-2所示。
表2-2 整型数值表示范围
![](https://epubservercos.yuewen.com/9146EB/23721566801954006/epubprivate/OEBPS/Images/Figure-T41_39573.jpg?sign=1738849774-eBpiSLlC1LhfLndcraQtRlBcUifp4hfZ-0-74faddb6d4c82cdf32f22ee24e8636b1)
在使用integer时,需要注意integer所能表示的最大值和最小值,防止溢出。integer所能表示的数值范围由字长决定,而字长一般与机器平台相关。例如64位机器上,integer所能表示的范围如下:
−263~263−1
PHP有如表2-3所示的常量表示数值范围。
表2-3 PHP整型数值常量
![](https://epubservercos.yuewen.com/9146EB/23721566801954006/epubprivate/OEBPS/Images/Figure-T41_39574.jpg?sign=1738849774-Y3kOwkT04ID2NCOW7eNibMZcNvsZ1733-0-e2b02e793420f5ba82dad157c5fbca4b)
在涉及大数运算时,可以使用BCMath(任意精度数学,手册链接:http://php.net/manual/zh/book.bc.php)扩展。
2.2.2 面试题:大数求和
题目描述:有两个大数,如何求它们的和?
看题目要求,两个大数超过了integer所能表示的整数范围,所以不能直接相加。在实际应用时,如果安装了BCMath扩展,可以使用bcadd来计算。例如:
<?php echo bcadd('9999999999999999','25'); //Output 10000000000000024 ?>
在此,可以采用模拟手工计算加法的方法:
(1)设置初始进位为0。
(2)从个位开始,向高位移动,每次取出当前位置的两个数字与进位相加。
(3)第(2)步得到的和如果大于10,则取余数作为该位置的值,并设置进位为1;如果小于10,则取得到的和为该位置的值,并设置进位为0。
(4)重复第(2)步和第(3)步,直到较长的数字处理完。
(5)如果最后的进位为1,则在结果的最高位拼接上1。
程序代码如下:(源码文件:ch02/big_add.php)
![](https://epubservercos.yuewen.com/9146EB/23721566801954006/epubprivate/OEBPS/Images/Figure-P42_39580.jpg?sign=1738849774-reqB0E0Qa3cEw4UZwpr61R1XziLRKQl6-0-87f20a3798730eb256000a0dad6f9f27)