码迷,mamicode.com
首页 > 其他好文 > 详细

面试题 16.07. 最大数值

时间:2020-07-15 22:43:51      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:差值   负数   class   数字   就是   bsp   col   符号   比较运算符   

地址:https://leetcode-cn.com/problems/maximum-lcci/

<?php
/**
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。

示例:

输入: a = 1, b = 2
输出: 2
 */
class Solution {

    /**
     * @param Integer $a
     * @param Integer $b
     * @return Integer
     */

    //首先 a - b 得到差值x
//
//由于是long型,右移63位得到符号位,注意负号不变,那么正数右移63位就是0,负数右移63位就是-1
//
//那么得出我们的计算公式 (1 + k) * a - b * k
//当 x >= 0 的时候,k = 0, 即 a > b
//那么我们的计算公式为 1 * a - b * 0 = a
//
//当 x < 0的时候,k = -1, 即 b > a
//那么我们的计算公式为 0 * a - b * ( -1 ) = b
    function maximum($a, $b) {
        $x  = $a - $b;
        $k = $x >> 63;
        return (1+$k)*$a -$b*$k;
    }
}

 

面试题 16.07. 最大数值

标签:差值   负数   class   数字   就是   bsp   col   符号   比较运算符   

原文地址:https://www.cnblogs.com/8013-cmf/p/13306640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!