Java中的按位操作符

来源:互联网 发布:人物传记 知乎 编辑:程序博客网 时间:2024/06/05 23:04
(1)按位与 &

示例:7&3=3

两个数二进制的对应位数想比较,如果同1则为1

一0则为0.

111
011
----
011----  3


(2)按位或 |
示例: 8|2=10

一1则为1,同0才为0
1000-----8
0010------2
------
1010-----  10



(3)按位异或 ^

7^4=7

对应位置不同则为1,相同则为0

111-----7
101-----4
-----
010-------  2
101
------
111-------  7

注意:两次异或同一个数  会返回原来的数  可通过此特性进行加密


(4)按位取反 ~

~5=-6

首先要明确,取反是二进制操作

在Java中,有符号整数都是用补码来表示

正数时,反码=原码 
正数时,补码=原码 

负数时,反码为原码取反 (符号位除外)
负数时,补码为原码取反+1 
下面以5为例:
二进制原码:0000 0000 0000 0000 0000 0000 0000 0101
取反操作后:1111 1111 1111 1111 1111 1111 1111 1010

符号位为1 是一个负数

1.先求反码:1000 0000 0000 0000 0000 0000 0000 0101
2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110
最高位代表符号位 1 表示负数,0 表示正数 所以结果是-6




1 0
原创粉丝点击