您的位置:首页 > 编程语言 > Java开发

常见算法题分析---java实现(一)

2018-02-13 17:56 239 查看
第一次博客,有错误勿喷,谢谢!

一,如何不用比较运算符,比较两个数的大小

  分析:在计算机中判断两个数不用比较运算符,一般两个数做减法 a-b,然后再去可以使用位运算符来进行判断这个数的正负,从而知道大小,有两个位运算,>>和>>>,>>代表的是带符号右移,什么意思?在计算机中正数的符号位是0,负数的符号位是1,如果一个数11000101>>7= 11111111,01101101>>7= 00000000,>>>是不带符号右移,右移几位在前面补0即可。这道题在做完减法之后,首先判断结果为不为0,为零即两个数相等,否则可以使用带符号右移31位(默认位int,在java中32位)如果是负数则全是1,b大于a,如果位正数则全为0,a大于b。补充:左移只有<<(补0即可),没有<<<,

public class A {
private static void getMax(int a, int b) {
int index=a-b;
if(index==0)
System.out.println("same");
else{
if(sign(a)==false && sign(index)==false)
System.out.println("b大");
else
System.out.println("a大");

}
}
private static boolean sign(int index) { //判断一个数的正负
int sc=index>>31;
if(sc==0)
return true; //正数
else
return false; //负数
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐