文章发布地址:https://blog.qiuluo.xin/2018/12/31/java%E7%9A%84%E4%BD%8D%E8%BF%90%E7%AE%97/
位运算平时很少用到,或者说基本上就没有用到过,但是在某些特殊时候还是很有用的,java提供了这种运算。
位运算符包括:&
(and与)、|
(or或)、^
(xor异或)、~
(not否)、>>
(右移)、<<
(左移)、>>>
n为整数,下面的表达式,如果用二进制表示的n右数第4位是1则返回1,是0则返回0。
n只能为整数,n为小数编译不能通过。
// n = 0b1001, 返回1
// n = 0b10001, 返回0
int fourthBitFromRight = (n & 0b1000) / 0b1000;
以下例子也可以判断n右数第4位是否是1。
// `1<<3` 结果为`0b1000`
// n和`0b1000`做与运算,再右移3位去除后三位,得到右数第四位结果。
int fourthBitFromRight = (n & (1 << 3) >> 3);
注意: >>>
运算符会用0填充高位,与>>
不同,>>
会用符号位填充高位。不存在<<<
运算符。
警告: 移位运算符的右操作数要完成摸32的运算(除非做操作数是long类型,在这种情况下需要对又操作数模64)。
例如:1<<35
的值等同于1<<3
。
网友评论