溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP如何將一個正整數(shù)擴(kuò)大一千倍

發(fā)布時間:2021-04-20 09:33:19 來源:億速云 閱讀:170 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)PHP如何將一個正整數(shù)擴(kuò)大一千倍的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因為php是開源的,從而使得php經(jīng)久不衰。

                           

方案制定

如何最高效率的將一個正整數(shù)擴(kuò)大一千倍?

當(dāng)這個問題被拋給人腦的時候,接受過優(yōu)秀的九年義務(wù)教育的我們稍加思索就能給出一個調(diào)皮而又不失大師風(fēng)范的答案:添三個零就行了~

但是當(dāng)這個問題交給程序員用代碼解決的時候,問題就要從編程的角度去考慮。我作為phper第一時間想到的方案分別是

  • 方案1:在數(shù)字末尾粘連字符串 “000”

  • 方案2:將原數(shù)字簡單的乘以 1000

當(dāng)我把這個問題丟給我的朋友的時候,他告訴我:

方案1肯定不行!你應(yīng)該采用方案2,但是如果你足夠雞賊的話,你應(yīng)該采用正整數(shù) X 1024 - 正整數(shù) X 24!

因為計算機(jī)是二進(jìn)制,當(dāng)你告訴他要乘以1000的時候,他會進(jìn)行正整數(shù) X 512 + 正整數(shù) X 256 + 正整數(shù) X 128 + 正整數(shù) X 128 + 正整數(shù) X 64 + 正整數(shù) X 32 + 正整數(shù) X 8,一直累加到湊齊 正整數(shù)的 1000 倍 為止。而運算2的10次方要比那一串加號更快接近結(jié)果。

實踐出真知

大佬的這段話很快打動了我。為了踐行大佬的真知,證明大佬的闡述對我猶如醍醐灌頂般點醒夢中人,我迅速寫出了一小段方法,將一個隨機(jī)正整數(shù)擴(kuò)大1000倍的算法用三種不同的方法分別跑 一千萬次,查看各個方法運行的效率(使用框架:laravel)

// 圖表內(nèi)容

$headers = ['次數(shù)', '方案1:拼接法', '方案2:乘1000', '方案3:乘以 1024'];

$data = [

    [0=>'第一次'],

    [0=>'第二次'],

    [0=>'第三次']

];

// 每個方法執(zhí)行三次

for ($count = 0; $count < 3; $count ++) {

    // 生成變量名 : plan1start1

    $start = Carbon::now()->getPreciseTimestamp();

    for ($i = 0; $i < 10000000; $i ++)

    {

        $integer = rand(1, 999);

        $result = (int)($integer . '000');

    }

    $end = Carbon::now()->getPreciseTimestamp();

    $data[$count][] = ($end - $start)/1000000 . '秒';

}

for ($count = 0; $count < 3; $count ++) {

    $start = Carbon::now()->getPreciseTimestamp();

    for ($i = 0; $i < 10000000; $i ++)

    {

        $integer = rand(1, 999);

        $result = $integer * 1000;

    }

    $end = Carbon::now()->getPreciseTimestamp();

    $data[$count][] = ($end - $start)/1000000 . '秒';

}

for ($count = 0; $count < 3; $count ++) {

    $start = Carbon::now()->getPreciseTimestamp();

    for ($i = 0; $i < 10000000; $i ++)

    {

        $integer = rand(1, 999);

        $result = $integer * 1024 - $integer * 24;

    }

    $end = Carbon::now()->getPreciseTimestamp();

    $data[$count][] = ($end - $start)/1000000 . '秒';

}

$this->table($headers, $data);

將這段代碼運行多次后均得到一個較為穩(wěn)定的結(jié)果:

PHP如何將一個正整數(shù)擴(kuò)大一千倍

感謝各位的閱讀!關(guān)于“PHP如何將一個正整數(shù)擴(kuò)大一千倍”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI