Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menambah integer besar menggunakan tatasusunan PHP

Bagaimana untuk menambah integer besar menggunakan tatasusunan PHP

PHPz
PHPzasal
2023-04-23 10:19:29679semak imbas

Memandangkan komputer moden semakin digunakan dalam kehidupan seharian, semakin sukar bagi komputer moden untuk memenuhi keperluan pemprosesan data berskala besar. Dalam pembangunan sebenar, kita selalunya perlu melakukan operasi seperti penambahan, penolakan, pendaraban, pembahagian, dll. pada integer besar, dan operasi ini selalunya perlu melebihi julat integer yang biasanya disokong oleh komputer. Untuk menyelesaikan masalah ini, kita perlu menggunakan struktur data dan algoritma dalam komputer. Artikel ini akan memperkenalkan cara menggunakan tatasusunan PHP untuk menambah integer besar.

1. Kaedah perwakilan integer besar

Dalam komputer, representasi pelengkap bagi integer biasanya digunakan Antaranya, pelengkap integer positif ialah perwakilan binarinya, manakala pelengkap bagi integer negatif ialah Pelengkap kedua-duanya ialah penyongsangan bitwise bagi perwakilan binari bagi nilai mutlaknya tambah 1. Walau bagaimanapun, jika anda ingin mengendalikan integer besar yang melebihi julat integer yang disokong oleh komputer anda, anda perlu menggunakan kaedah perwakilan lain.

Cara biasa untuk mewakili integer besar ialah menggunakan perwakilan rentetan, di mana setiap digit diwakili oleh satu aksara. Sebagai contoh, rentetan yang mewakili nombor perpuluhan 1234567890 boleh diwakili sebagai "1234567890". Walau bagaimanapun, menggunakan rentetan untuk mewakili nombor adalah tidak cekap apabila melakukan operasi berangka, jadi kita perlu menggunakan struktur data lain untuk mewakili integer yang besar.

Kaedah lain yang biasa digunakan untuk mewakili integer besar ialah menggunakan perwakilan tatasusunan. Dalam kaedah ini, kami menukar integer besar kepada tatasusunan, di mana setiap elemen mewakili bit integer. Sebagai contoh, tatasusunan yang mewakili nombor perpuluhan 1234567890 boleh diwakili sebagai [1,2,3,4,5,6,7,8,9,0]. Kelebihan menggunakan tatasusunan untuk mewakili integer besar ialah operasi berangka boleh dilakukan dengan lebih cekap, dan ia juga boleh menjimatkan ruang storan, kerana jika beberapa nombor tertib lebih tinggi ialah 0, ia tidak perlu diwakili dalam tatasusunan .

2. Cara menambah integer besar menggunakan tatasusunan PHP

Dalam PHP, kita boleh menggunakan tatasusunan untuk mewakili dan menambah integer besar. Berikut ialah kod PHP:

function addBigIntegers($a, $b) {
  //将数组a和b的长度对齐
  while (count($a) < count($b)) {
    $a[] = 0;
  }
  while (count($b) < count($a)) {
    $b[] = 0;
  }
  $carry = 0; //表示进位数
  $result = array(); //保存结果的数组
  for ($i = count($a) - 1; $i >= 0; $i--) {
    $sum = $a[$i] + $b[$i] + $carry; //计算当前位上的和
    $carry = intval($sum / 10); //计算进位数
    $result[$i] = $sum % 10; //计算当前位上的结果
  }
  if ($carry > 0) {
    array_unshift($result, $carry); //如果最高位有进位,将进位添加到结果数组中
  }
  return $result;
}

$a = array(1, 2, 3, 4, 5); 
$b = array(9, 8, 7, 6, 5);
$result = addBigIntegers($a, $b);
echo implode("", $result); //输出结果的十进制表示

Dalam kod di atas, fungsi addBigIntegers digunakan untuk menambah dua tatasusunan integer besar dan mengembalikan tatasusunan hasil. Dalam fungsi, kita mula-mula menyelaraskan panjang dua tatasusunan dengan menambah 0 pada penghujung tatasusunan yang lebih pendek. Kemudian, kami menambah bermula daripada bit tertinggi tatasusunan, mengira jumlah, membawa nombor dan hasil pada bit semasa, dan menyimpan hasilnya ke tatasusunan baharu. Akhir sekali, jika terdapat pembawaan daripada bit tertinggi, pembawa ditambah ke hadapan tatasusunan hasil.

Untuk input kepada fungsi ini, kita boleh menggunakan tatasusunan dengan panjang arbitrari untuk mewakili integer besar kerana fungsi itu menjajarkan panjang tatasusunan ini secara automatik. Output ialah tatasusunan, di mana setiap elemen mewakili bit integer hasil. Jika anda perlu mewakili hasilnya sebagai nombor perpuluhan, anda boleh melakukannya dengan menukar nombor dalam tatasusunan output kepada aksara dan kemudian menggabungkannya bersama-sama.

Ringkasan

Artikel ini memperkenalkan kaedah menambah integer besar dengan tatasusunan PHP. Dalam pembangunan sebenar, kaedah ini sangat praktikal kerana ia boleh mengendalikan operasi integer yang besar dengan cekap dan menjimatkan ruang storan. Apabila menggunakan kaedah ini, kita hanya perlu menukar integer besar kepada tatasusunan dan menambahnya menggunakan fungsi addBigIntegers. Jika anda perlu melakukan operasi berangka lain, anda boleh melanjutkan kaedah ini.

Atas ialah kandungan terperinci Bagaimana untuk menambah integer besar menggunakan tatasusunan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn