问题:
比如:给定两个值 5和10,不通过比较,直接找出最大值。
分析:
一旦涉及到不用比较找最大值,想都不用想,一般只能通过位运算来实现。
max = a - ((a-b)&((a-b)>>31))
或者
max = ((a+b)+|a-b|)/2
如果找最小值,我们只需把两个值相加,减去max即可。
转载请注明出处:http://blog.youkuaiyun.com/beiyeqingteng
本文介绍了一种利用位运算的方法来直接找出两个给定数值中的最大值,避免了使用传统的比较操作。文中提供了两种实现方式,并简述了如何通过这些值求得最小值。
问题:
比如:给定两个值 5和10,不通过比较,直接找出最大值。
分析:
一旦涉及到不用比较找最大值,想都不用想,一般只能通过位运算来实现。
max = a - ((a-b)&((a-b)>>31))
或者
max = ((a+b)+|a-b|)/2
如果找最小值,我们只需把两个值相加,减去max即可。
转载请注明出处:http://blog.youkuaiyun.com/beiyeqingteng
1246
4556
1515

被折叠的 条评论
为什么被折叠?