官术网_书友最值得收藏!

  • 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)

主站蜘蛛池模板: 和田市| 左权县| 和政县| 仁怀市| 鸡泽县| 交口县| 运城市| 云林县| 临夏市| 观塘区| 忻州市| 疏勒县| 马尔康县| 台中县| 出国| 宣武区| 门源| 太白县| 海晏县| 潜江市| 大庆市| 商洛市| 永兴县| 治县。| 交城县| 青海省| 通山县| 剑河县| 安溪县| 开阳县| 响水县| 阆中市| 固阳县| 滁州市| 延川县| 河北省| 马关县| 潞城市| 永兴县| 申扎县| 中卫市|