java位运算符的用法,java位逻辑运算符怎么运算,Java中的位运算符全解

java位运算符的用法,java位逻辑运算符怎么运算,Java中的位运算符全解

本文主要详细介绍Java中的位运算符。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。

:

目录

1.(按位AND运算符)2。|(按位OR运算符)3。(异或运算符)4。(左移运算符)5。(右移位运算符)6。~(求反运算符)7。(无符号右移运算符)(1)正数无符号右移(2)负数无。

1. (按位与运算符)

按位AND的运算规则是将两边的数转换成二进制位,然后计算出最终值。运算规则是:11=1,10=0,01=0,00=0

公共类Main {

公共静态void main(String[] args) {

//按位AND,先将运算符两边的条件值转换成二进制,再进行比较运算。

/**

* 0 0 1 1

* 0 1 0 1

* -

* 0 0 0 1

*/

int a=35

/**

* 0 0 0 1

* 0 0 1 0

* -

* 0 0 0 0

*/

int b=12

system . out . println(a);//1

system . out . println(b);//0

}

}

2. |(按位或运算符)

|按位或和按位与计算方法都是二进制转换和重算,不同的是运算规则(一为真,则为真):1|0=1,1|1=1,0|0=0,0|1=1。

公共类Main {

公共静态void main(String[] args) {

//|按位OR,运算符两边的条件值会先转换成二进制,然后再进行比较运算。

/**

* 0 0 1 1

* 0 1 0 1

* -

* 0 1 1 1

*/

int a=3 | 5;

/**

* 0 0 0 1

* 0 0 1 0

* -

* 0 0 1 1

*/

int b=1 | 2;

system . out . println(a);//7

system . out . println(b);//3

}

}

3. ^(异或运算符)

顾名思义,异或运算符是不一样的,它的运算规则是1 0=1,1 1=0,0 1=1,0 0=0。

公共类Main {

公共静态void main(String[] args) {

/**

* 0 0 1 1

* 0 1 0 1

* -

* 0 1 1 0

*/

int a=3^5;

/**

* 0 0 0 1

* 0 0 1 0

* -

* 0 0 1 1

*/

int b=1^2;

system . out . println(a);//6

system . out . println(b);//3

}

}

4. (左移运算符)

52表示二进制位5向左移动两位,0向右添加。

5的二进制位是0000 0101,即把有效值101左移两位数就是0001 0100。正数左边第一位用0填充,负数用1填充,等于乘以2的n次方。十进制位是5 * 2 ^ 2=20。

公共类Main {

公共静态void main(String[] args) {

/**

* 52表示二进制位5向左移动两位,0向右添加。

* 0 0 0 0 0 1 0 1

* 0 0 0 1 0 1 0 0

*/

system . out . println(52);//20

}

}

5. (右移移运算符)

在后续处理之前,每个位运算符都将值转换为二进制。

5的二进制位是0000 0101,右移两位意味着左移101到0000 001。正数左边第一位补0,负数补1,等于n次方除以2,结果是1。

公共类Main {

公共静态void main(String[] args) {

/**

* 52表示二进制位5向右移动两位,0向左添加。

* 0 0 0 0 0 1 0 1

* 0 0 0 0 0 0 0 1

*/

system . out . println(52);//1

}

}

6. ~(取反运算符)

反过来就是1是0,0是1。

5的二进制位是0000 0101,反转位是1111 1010,值是-6

公共类Main {

公共静态void main(String[] args) {

/**

* 0 0 0 0 0 1 0 1

* -

* 1 1 1 1 1 0 1 0

*

* 1.如果11111010要转换成负十进制,因为最高位是1,所以11111001减1得到1111001。

* 2.反转00010101,然后将0000100对应的十进制数算为6。

* 3,所以11111010的十进制是-6。

*

* 1 1 1 1 1 0 1 0

* - 0 0 0 0 0 0 0 1

* -

* 1 1 1 1 1 0 0 1

* -

* 0 0 0 0 0 1 0 0

*/

system . out . println(~ 5);//-6

}

}

7. (无符号右移运算符)

(1) 正数无符号右移

无符号右移运算符和右移运算符的主要区别在于负数的计算,因为无符号右移是高位补0,移动多少位补0。

5的二进制位是0000 1111,右移2位,结果是3。

公共类Main {

公共静态void main(String[] args) {

/**

* 0000 1111

* -

* 0000 0011

*/

system . out . println(152);//3

}

}

(2) 负数无符号右移

-6的二进制是6加1,6的二进制反转,即0000 0000 0000 0000 0000 0110。反转后1111 1111 1111 1111 1111 1111 1111 1111 1010加1,右移三位:0001 1111 1111 1111 1111。

公共类Main {

公共静态void main(String[] args) {

system . out . println(-63);//536870911

}

}

总结

本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: