欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java位运算符 博客分类: Java随笔 java 

程序员文章站 2024-02-12 08:27:52
...
处理整型类型(byte, short, int, long)时,可用位运算符对整型数值的各个位进行操作。看看以下的位运算符:
1. &("and") 与运算
int a = 0b1000; //0b1000是8的二进制表示
int b = 0b1011; //0b1011是11的二进制表示
int c = a & b; //对a和b做与位运算
System.out.println(c);//得到结果c为8,即0b1000


具体运算逻辑如下:只有两个操作数对应的位都为1的时候,&运算结果才为1,否则为0.
a   0b1000
b   0b1011
-----------
c   0b1000

2. |("or") 或运算
int a = 0b1000; //0b1000是8的二进制表示
int b = 0b1011; //0b1011是11的二进制表示
int c = a | b; //对a和b做或位运算
System.out.println(c);//得到结果c为11,即0b1011


具体运算逻辑如下:只要两个操作数对应的位有一个为1,|运算结果就为1,否则为0.
a   0b1000
b   0b1011
-----------
c   0b1011

3. ^("xor") 异或运算
int a = 0b1000; //0b1000是8的二进制表示
int b = 0b1011; //0b1011是11的二进制表示
int c = a ^ b; //对a和b做异或位运算
System.out.println(c);//得到结果c为3,即0b0011


具体运算逻辑如下:只要两个操作数对应的位相同,^运算结果就为0,否则为1.
a   0b1000
b   0b1011
-----------
c   0b0011

4. ~("not") 非运算
int a = 0b1000; //0b0000 1000是8的二进制表示
int c = ~a; //对a做非位运算
System.out.println(c);//得到结果c为-9,即0b1000 1001

具体运算逻辑如下: ~运算规则是按位取反,此时为补码.需转化为原码,即先按位取反,符号位除外,然后末位+1.
0b0000 1000先按位取反,得到如下.
0b1111 0111此时为补码.需转化为原码.
0b1000 1000先按位取反,符号位除外.
0b1000 1001末位加1.即-9.
相关标签: java