zoukankan      html  css  js  c++  java
  • PHP 二进制数相加

     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         #将两个数组的长度补到一样长,短数组在前面补0
    17         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 ?>
  • 相关阅读:
    docker镜像
    docker常用命令
    docker基础
    跨站脚本漏洞(XSS)基础
    Session、Cookie与Token
    linux之curl工具
    ssl证书与java keytool工具
    mysql主从复制
    linux之平均负载(学习笔记非原创)
    mysql8.0忘记密码如何操作?
  • 原文地址:https://www.cnblogs.com/zemliu/p/2681089.html
Copyright © 2011-2022 走看看