java 位运算 取反_Java 位运算符

Java位运算符(bitwise operators),应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)。

位运算符作用在所有的位上,并且按位运算。假设a = 5,b = 12;它们的二进制格式表示将如下:

A = 0101

B = 1100

-----------------

A&B = 0100

A | B = 1101

A ^ B = 1001

~A= 1010

操作符

描述

例子

如果相对应位都是1,则结果为1,否则为0

a & b = 4 即100

|

如果相对应位都是 0,则结果为 0,否则为 1

a | b = 13 即1101

^

如果相对应位值相同,则结果为0,否则为1

a ^ b = 9 即1001

按位取反运算符翻转操作数的每一位,即0变成1,1变成0。

~a = -6 即1010

<<

按位左移运算符。左操作数按位左移右操作数指定的位数。

a << 2 = 20 即10100

>>

按位右移运算符。左操作数按位右移右操作数指定的位数。

a >> 2 = 1 即1

>>>

按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

a >>> 2 = 1 即1

位移说明

A << 2 表示A 向左边移动2位

A = 0101

计算机的前面其实还有很多0

所以 表示如下

位移前:A = 0000 0101

位移后:A = 0001 0100

当A >> 2 向右边移动的时候,后面没有空间了。所以砍掉

位移前:A = 0000 0101

位移后:A = 0000 0001

Java测试代码

int a = 5;

int b = 12;

System.out.println("a 的二进制:" + Integer.toBinaryString(a));

System.out.println("b 的二进制:" + Integer.toBinaryString(b));

int c = 0;

c = a & b;

System.out.println("a & b = " + c +" 即"+Integer.toBinaryString(c));

c = a | b;

System.out.println("a | b = " + c +" 即"+Integer.toBinaryString(c));

c = a ^ b;

System.out.println("a ^ b = " + c +" 即"+Integer.toBinaryString(c));

c = ~a;

System.out.println("~a = " + c +" 即"+Integer.toBinaryString(c));

c = a << 2;

System.out.println("a << 2 = " + c +" 即"+Integer.toBinaryString(c));

c = a >> 2;

System.out.println("a >> 2 = " + c+" 即"+Integer.toBinaryString(c) );

c = a >>> 2;

System.out.println("a >>> 2 = " + c+" 即"+Integer.toBinaryString(c) );

输出

a 的二进制:101

b 的二进制:1100

a & b = 4 即100

a | b = 13 即1101

a ^ b = 9 即1001

~a = -6 即11111111111111111111111111111010

a << 2 = 20 即10100

a >> 2 = 1 即1

a >>> 2 = 1 即1

复合位赋值运算符

运算符

含义

实例

结果

&=

按位与赋值

a &= b

等价于 a=a & b

|=

按位或赋值

a |= b

等价于 a=a | b

^=

按位异或赋值

a ^= b

等价于 a=a ^ b

-=

按位取反赋值

a ~= b

等价于 a=a ~ b

«=

按位左移赋值

a «= b

等价于 a=a « b

»=

按位右移赋值

a »= b

等价于 a=a » b

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值