0006不使用判断语句求二者中的最小值
来源:互联网 发布:杭州哪里有淘宝大学 编辑:程序博客网 时间:2024/06/05 05:27
本文转自:http://blog.csdn.net/gukesdo/article/details/7439059
(y^(x^y)&-(x<y))可以用来求取二者的最小值。
如果x<y;则根据运算规则有,-(x<y)为-1,计算机中都是用补码表示数字的,所以计算机中-1表示为全1;所以在下一步的运算中(x^y)&-(x<y)得到的结果为(x^y);之后y^(x^y),根据异或运算的交换略,y^y^x结果为x;
如果x>y;则根据运算规则有,-(x<y)为-1,计算机中补码表示也是全为0,所以(x^y)&-(x<y)得到的结果为0,之后y^0为y;
综上所述,所以这个式子返回的是x和y的最小值。
经过以上的分析,我们可以很快推导出使用这些位运算计算二者最大值的方法,即(y^(x^y)&(x<y-1))或者(x^(x^y)&-(x<y));具体的推导过程和上面的一样。
0 0
- 0006不使用判断语句求二者中的最小值
- 使用异或运算和与运算求取二者最大值和最小值(不使用判断语句求二者最小值)
- 不使用if、?:、switch及其他判断语句如何找出两个int型变量中的最大值和最小值
- 求两个整数的最大值,不使用判断语句
- 找出两个int型变量的最大值和最小值,不使用if/:?/switch判断语句
- 不使用判断语句求两个数中较大的一个
- 使用abs求二个数中的最大值和最小值
- 求二维数组中的最小值
- 求旋转数组中的最小值
- 求数组中的最大最小值
- 判断三个数中的最小值
- 不使用比较运算符求两个数的最大值or最小值【位运算】
- 如何不使用动态内存分配求一组整数的最小值
- 剑指offer 面试题46 求 1+2+3+...+n (不使用乘除以及条件判断语句求前 n 项正整数的和)
- 求一组数据中的最大值及最小值
- 求数组中的最大和最小值
- STL-求数组中的最大值,最小值
- c# 求10个数中的最大最小值
- 网站静态化(转)
- office技巧-1 : 如何在excel中将不连续的空格替换成相同的值
- 一个加班到凌晨2点多的bug
- php、js、html混合
- CoerDate的使用之一:coreData的介绍
- 0006不使用判断语句求二者中的最小值
- group
- 第七周项目3 将负数赶出队列
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- hihocodxer1187 Divisors
- Linux查看CPU和内存使用情况
- 【巩固地基】系列之:unity基础读书笔记(杂)
- 类练习题1:将浮点数转化为金额的类
- HttpClient使用详解