網上的大整數相加演算法(php)大多實現的都有這樣或者那樣的問題,要麼沒有考慮最高位進製,要麼沒有考慮各位相加的10進製溢位,大概phper都比較粗曠吧。
下面是自己仿照原來c語言版本(譚浩強版演算法)改造的php版本,僅供參考:
<?php
/* 大整數加法的php實現
*/function bigdataadd($a,$b)
if($n>0)
$t = $t1+$t2+$flag;//當前位加法運算考慮上一輪的進製標誌
$flag = intval($t/10);//本輪是否進製
$result = ($t%10).$result;//向高位新增結果
}//最高位加完發現還有進製標誌,需要再向最高位+1
if ($flag)
return $result;
}$a = '999999999999999999999999999999999999';
$b = '1';
$result = bigdataadd($a,$b);
echo $result;
華為面試題之大整數相加
問題描述 在計算機中,由於處理器位寬限制,只能處理有限精度的十進位制整數加減法,比如在32位寬處理器計算機中,參與運算的運算元和結果必須在 231 231 1之間。如果需要進行更大範圍的十進位制整數加法,需要使用特殊的方式實現,比如使用字串儲存運算元和結果,採取逐位運算的方式。如下 98765432...
大整數相加
include include include include 思路如下 將兩個字串分別由低位到高位放置到int陣列中 然後每位對齊相加,大於10,本位取餘,高位進1 char bigintadd const char numstr1,const char numstr2 for i len1 i ...
特大整數相加
一 特大整數描述 int和long作為基本的整數型別,取值範圍和位數直接相關。如果是n位整數的話,最高位表示符號位,剩下的n 1位以補碼形式表示絕對值,因此範圍是整數區間 2 n 1 2 n 1 int和long並沒有明確位數,一般而言,32位機的int是32位的,於是範圍是 2 31,2 31 也...