抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > java位运算应用

java位运算应用

时间:2018-09-20 03:42:22

相关推荐

1. 判断int型变量a是奇数还是偶数

a&1 = 0 偶数

a&1 = 1 奇数

2. 求平均值,比如有两个int类型变量x、y,首先要求x+y的和,再除以2,但是有可能x+y的结果会超过int的最大表示范围,所以位运算就派上用场啦。

(x&y)+((x^y)>>1);

/liangyihuai/article/details/50001819

3. 对于一个大于0的整数,判断它是不是2的几次方

((x&(x-1))==0)&&(x!=0);

4. 比如有两个int类型变量x、y,要求两者数字交换,位运算的实现方法:性能绝对高效

x ^= y;

y ^= x;

x ^= y;

5. 求绝对值

int abs( int x )

{

int y ;

y = x >> 31 ;

return (x^y)-y ; //or: (x+y)^y

}

针对以上代码分析如下:

~1、 y = x > > 31 ;//右移31位,只保留符号位,如果是负数,则是-1,其二进制为1111 1111 1111 1111,全为1,如果是正数,则全0

~2、x^y//X与Y的异或运算,按位进行异或,当y=0时,实际上二者异或后运算的值保持不变,当Y=-1时,则实际上是将原值每位求反(1变成0,0变成1)

~3、-y//当y为0时保持不变,为-1时,则表示加1,因此

(x^y)-y当Y=0时,表示保持x不变,当y=-1时,则表示将x各位求反后加1,实际上就是对该数求负,由于原来就是负数,因此就是变成正数。

综上所述,该过程就是求绝对值。

~6. 取模运算,采用位运算实现:

a % (2^n) 等价于 a & (2^n - 1)

~7. 乘法运算 采用位运算实现

a * (2^n) 等价于 a << n

~8. 除法运算转化成位运算

a / (2^n) 等价于 a>> n

~9. 求相反数

(~x+1)

~10 a % 2 等价于 a & 1

6. 取模运算,采用位运算实现:

a % (2^n) 等价于 a & (2^n - 1)

7. 乘法运算 采用位运算实现

a * (2^n) 等价于 a << n

8. 除法运算转化成位运算

a / (2^n) 等价于 a>> n

9. 求相反数(符号位也相反了)

(~x+1)

10 a % 2 等价于 a & 1

参考自:/jishu/102.html

如果觉得《java位运算应用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。