美文网首页
java--运算大法

java--运算大法

作者: 话尔loony | 来源:发表于2019-05-28 15:42 被阅读0次

判断奇偶数

一般实际开发中遇到这样的问题,我们的处理情况大多如下:

for(n%2 == 1){
    sout("n为奇数");
}

但是,BUT,下次你可以用位运算这种形式来一展你纯真的*格了。如下:

if(n & 1 == 1){
      sout("n为奇数");
}

这样写的方式 时间效率也比较高(PS:无形装逼,最为致命)。

交换两个int

这个情形,应该在实际开发中遇到的机会比较多,所以,骚年,你准备好了吗?
一般我们都会构造一个私有的函数,比如:

private void swap(int x,int y){
    int temp = x;
    x = y;
    y = temp;
}

BUT,面试的时候你可能会遇上这样的一道问题:
不允许你使用额外的辅助变量来完成两个int 的交换
是不是顿时整懵逼了,这可咋整呀?如下:

private void swap(int x,int y){
   x = x ^ y;
   y = x ^ y;
   x = x ^ y;
}

是不是很amazing,是不是在你的印象中,异或(^)只是不进位的加法运算,没错,它就是你理解的不进位的加法运算符。
我们都知道,两个相同的数异或之后都会等于0.即 n ^ n = 0;而任何数与0异或,得到的都是本身,即 n ^ 0 = n。
这样,你就能推算出上面的过程了。
利用位运算,同样可以解决下面的问题:

给出a、b两个整数,求和,但是不能使用 + 等数学运算符号

int aplusb(int a, int b){
    if((a&b) == 0){
        return a|b;
    }else {
        return aplusb(a^b, (a&b)<<1);
    }
}
给你一组整型数据,这些数据中,其中有一个数只出现了一次,其他的数都出现了两次,让你来找出一个数 

int get(int[] arry){
    int tmp = arry[0];
    for(int i = 1;i < arry.length; i++){
        tmp = tmp ^ arry[i];
    }
    return tmp;
}

相关文章

  • java--运算大法

    判断奇偶数 一般实际开发中遇到这样的问题,我们的处理情况大多如下: 但是,BUT,下次你可以用位运算这种形式来一展...

  • Java--位运算符

      位运算指的是进行二进制位的运算,常用的位运算符如下所示。 位运算符   说明~       取反&     ...

  • Java--算术运算符

      算术运算符中+,-,*,/,%属于二元运算符,二元运算符指的是需要两个操作数才能完成运算的运算符。其中的%是取...

  • Java--逻辑运算符

      逻辑运算的操作数和运算结果都是boolean值。 逻辑运算符   短路与和短路或采用短路的方式。从左到右计算,...

  • Eclipse 开发基本配置与快捷键

    自动提示Window -->> Preferences -->> Java-->> Editor-->> Cont...

  • Java--三目条件运算符

    语法格式:x?y:z  其中x为boolean类型表达式,先计算x的值,若为true,则整个运算的结果为表达式y的...

  • Eclipse自动补全

    Windows——>Preferences——>Java-->Editor-->Content Asist,在Au...

  • B入门指南-----eclipse代码格式化

    打开eclipse 选择 window-->Preferences-->JAVA-->Code-->Code St...

  • 001—Myeclipse常用编程设置

    设置工程通用JDK 选择Windows-->preference--->java-->Installed JREs...

  • java启动jvm配置详解

    /usr/lib/jvm/java-1.8.0-openjdk/bin/java-- 资源分配-server -X...

网友评论

      本文标题:java--运算大法

      本文链接:https://www.haomeiwen.com/subject/cdydtctx.html