- PHP面試一戰(zhàn)到底
- 閆小坤
- 502字
- 2022-07-28 19:21:31
2.2 整型
2.2.1 概念
整型(integer)表示的變量屬于所有整數(shù)集合Z。
Z={...,?N,?N+1,...,0,1,2,...,N?1,N,...}
整型可表示的數(shù)值如表2-2所示。
表2-2 整型數(shù)值表示范圍

在使用integer時(shí),需要注意integer所能表示的最大值和最小值,防止溢出。integer所能表示的數(shù)值范圍由字長(zhǎng)決定,而字長(zhǎng)一般與機(jī)器平臺(tái)相關(guān)。例如64位機(jī)器上,integer所能表示的范圍如下:
?263~263?1
PHP有如表2-3所示的常量表示數(shù)值范圍。
表2-3 PHP整型數(shù)值常量

在涉及大數(shù)運(yùn)算時(shí),可以使用BCMath(任意精度數(shù)學(xué),手冊(cè)鏈接:http://php.net/manual/zh/book.bc.php)擴(kuò)展。
2.2.2 面試題:大數(shù)求和
題目描述:有兩個(gè)大數(shù),如何求它們的和?
看題目要求,兩個(gè)大數(shù)超過(guò)了integer所能表示的整數(shù)范圍,所以不能直接相加。在實(shí)際應(yīng)用時(shí),如果安裝了BCMath擴(kuò)展,可以使用bcadd來(lái)計(jì)算。例如:
<?php echo bcadd('9999999999999999','25'); //Output 10000000000000024 ?>
在此,可以采用模擬手工計(jì)算加法的方法:
(1)設(shè)置初始進(jìn)位為0。
(2)從個(gè)位開(kāi)始,向高位移動(dòng),每次取出當(dāng)前位置的兩個(gè)數(shù)字與進(jìn)位相加。
(3)第(2)步得到的和如果大于10,則取余數(shù)作為該位置的值,并設(shè)置進(jìn)位為1;如果小于10,則取得到的和為該位置的值,并設(shè)置進(jìn)位為0。
(4)重復(fù)第(2)步和第(3)步,直到較長(zhǎng)的數(shù)字處理完。
(5)如果最后的進(jìn)位為1,則在結(jié)果的最高位拼接上1。
程序代碼如下:(源碼文件:ch02/big_add.php)

- Reporting with Visual Studio and Crystal Reports
- Getting Started with SQL Server 2012 Cube Development
- TypeScript項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)
- Asynchronous Android Programming(Second Edition)
- PySide 6/PyQt 6快速開(kāi)發(fā)與實(shí)戰(zhàn)
- Procedural Content Generation for C++ Game Development
- 深度探索Go語(yǔ)言:對(duì)象模型與runtime的原理特性及應(yīng)用
- Programming Microsoft Dynamics? NAV 2015
- PrimeFaces Blueprints
- Xamarin Blueprints
- Arduino Wearable Projects
- Node.js區(qū)塊鏈開(kāi)發(fā)
- Drupal 8 Development:Beginner's Guide(Second Edition)
- 嵌入式C編程實(shí)戰(zhàn)
- Scala編程(第4版)