1 <?php 2 #二進位相加 3 function binary_plus($binstr1, $binstr2) { 4 $bin_arr1 = str_split($binstr1); 5 $bin_arr2 = str_split($binstr2); 6 $arr_len1 = count($bin_arr1); 7 $arr_len2 = count($bin_arr2); 8 $sum_arr = array(); 9 10 if ($arr_len1 < $arr_len2) {11 $short_arr = &$bin_arr1;12 } else {13 $short_arr = &$bin_arr2;14 }15 16 #將兩個數組的長度補到一樣長,短數組在前面補017 for ($i = 0; $i < abs($arr_len1 - $arr_len2); $i++) {18 array_unshift($short_arr, 0);19 }20 21 $carry = 0; #進位標記22 for ($i = count($bin_arr1) - 1; $i >= 0; $i--) { 23 $result = $bin_arr1[$i] + $bin_arr2[$i] + $carry;24 switch ($result) {25 case 0:26 array_unshift($sum_arr, 0);27 $carry = 0;28 break;29 case 1:30 array_unshift($sum_arr, 1);31 $carry = 0;32 break;33 case 2:34 array_unshift($sum_arr, 0);35 $carry = 1;36 break;37 case 3:38 array_unshift($sum_arr, 1);39 $carry = 1;40 break;41 default:42 die();43 }44 }45 46 if($carry == 1) {47 array_unshift($sum_arr, 1);48 }49 50 return implode("", $sum_arr);51 }52 53 $bin1 = "1001101";54 $bin2 = "1010";55 print_r(binary_plus($bin1, $bin2));56 ?>