加法

/**
 * 加法
 */
function add($int_num) {
    $int_num = decbin($int_num); //取得整数的二进制
    $new_int_num = ''; //新字符
    $i = strlen($int_num) - 1;
    //从字符串末尾开始读取字符
    for($i;$i>=0;$i--) { 
        if($int_num[$i] == 1) { 
            //如果读取到的是 1 则 在新字符中拼入 0
            $new_int_num .= '0';
        }else if($int_num[$i] == 0 || $int_num[$i] == '') { 
            //如果读到的是 0 或 空 则在新字符中 拼入 1 
            $new_int_num .= '1';
            $j = $i - 1;
            //将字符中剩余未读取的部分倒序取出来拼入新字符中
            for ($j;$j>=0;$j--) { 
                $new_int_num .= $int_num[$j];
            }
            //跳出 循环
            break;
        }
    }
    //将新字符中的字符首尾反转过来 比如 1101 反转成 1011
    $i = strlen($new_int_num) - 1;
    $int_num = ''; //反转后字符
    for ($i;$i>=0;$i--) { 
        $int_num .= $new_int_num[$i];
    }
    //将反转后字符的转换成十进制 返回
    return bindec($int_num);
}

echo add(100); // 101

posted @ 2015-11-22 01:19  扬空  阅读(239)  评论(0编辑  收藏  举报