zoukankan      html  css  js  c++  java
  • 位运算的应用

    • 求浮点数的绝对值
    double abs(double y)
    {
    double x = y;
    *(((int *) &x) + 1) &= 0x7fffffff;
    return x;
    }
    • 整数的平均值

          对于两个整数x,y,如果用 (x+y)/2 求平均值,会产生溢出,因为 x+y 可能会大于INT_MAX,但是我们知道它们的平均值是肯定不会溢出的,我们用如下算法:

    #define AVE(x,y) ((x)&(y))+(((x)^(y))>>1)
    • 判断一个整数是不是2的幂

         对于一个数 x >= 0,判断他是不是2的幂 :

    #define POWER(x) ((((x)&((x)-1))==0)&&((x)!=0))
    • 不用temp交换两个整数(没啥用)

    int x,y;
    void swap(int &x , int &y)
    {
    x
    ^= y;
    y
    ^= x;
    x
    ^= y;
    }
    • 当length=2^n时,hashcode & (length-1) == hashcode % length。应用在JDK的HashMap中:文章地址
  • 相关阅读:
    22. Generate Parentheses
    21. Merge Two Sorted Lists
    20. Valid Parentheses
    19. Remove Nth Node From End of List
    18. 4Sum
    JDK7新特性
    类Enum
    装饰设计模式
    模板设计模式
    反射
  • 原文地址:https://www.cnblogs.com/codingmylife/p/1679324.html
Copyright © 2011-2022 走看看