位运算优化

 写在前面:

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

 

 

 

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的一大特点是取消了程序员直接操作指针)

转载于:https://www.cnblogs.com/Antigonae/p/10147058.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值