• 位运算优化


     写在前面:

      整理出来的一些能显著提高性能的位运算优化方法

    C++

    (类似)x=x*10

    x=(x<<1)+(x<<3)

    x/=2

    x>>=1

    x%2==1

    x&1

    x%2==0

    !(x&1)

    (long long)int a,b,c;  c=a;a=b;b=c;

    (long long)int a,b;  a^=b;b^=a;a^=b

    x*=2n

    x<<=n

    x/=2n

    x>>=n

    int a;  if(a<0) a=-a;

    int a;  a=(a^(a>>31))-(a>>31); 

    long long int a;  if(a<0) a=-a;

    long long int a;  a=(a^(a>>63))-(a>>63); 

    (取得int的最大值)

    (1<<31)-1

    (取得long long int的最大值)

    (1<<63)-1

    (取得int的最小值)

    1<<31

    (取得long long int的最小值)

    1<<63

    (long long)int a,b;  (a+b)/2;

    (long long)int a,b;  ((a^b)>>1)+(a&b);

    Java

    (类似)x=x*10

    x=(x<<1)+(x<<3)

    x/=2

    x>>=1

    (long long)int a,b,c;  c=a;a=b;b=c;

    (long long)int a,b;  a^=b;b^=a;a^=b

    x*=2n

    x<<=n

    x/=2n

    x>>=n

    int a;  if(a<0) a=-a;

    int a;  a=(a^(a>>31))-(a>>31); 

    long long int a;  if(a<0) a=-a;

    long long int a;  a=(a^(a>>63))-(a>>63); 

    (取得int的最大值)

    (1<<31)-1

    (取得long long int的最大值)

    (1<<63)-1

    (取得int的最小值)

    1<<31

    (取得long long int的最小值)

    1<<63

    (long long)int a,b;  (a+b)/2;

    (long long)int a,b;  ((a^b)>>1)+(a&b);

    (需要注意的是,Java的一大特点是取消了程序员直接操作指针)

  • 相关阅读:
    C#匿名类型
    C#中实例Singleton
    Unity Pitfall 汇总
    Unity快捷键
    System.Object
    ExecuteInEditMode
    preview放大镜
    判断当前Selection是否为prefab
    AddComponentMenu
    MenuItem属性
  • 原文地址:https://www.cnblogs.com/Antigonae/p/10147058.html
Copyright © 2020-2023  润新知