PHP 位元相加

來源:互聯網
上載者:User
 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 ?>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.