位运算

 位运算符

 按位操作符用来操作整数基本数据类型中的单个比特(bit),就是二进制,按位操作符会对两个参数中对应的位bit执行布尔运算,最终生成一个结果。按位操作符来源于C语言面向底层的操作,Java设计的初衷是嵌入式电视机机顶盒,所以面向底层的操作也保留了下来。

 任何信息在计算机中都是以二进制的形式保存的,”&”“|”“^”除了可以作为逻辑运算符也可以作为位运算符。位运算是直接对二进制进行运算。他们对两个操作数中的每一个二进制位都进行运算。例如int是由32个二进制数组成,因此使用位运算符可以对整数值的二进制数进行运算。

位(bit)运算符:

位运算符

 

运算符含义

 

&

与(AND

|

或(OR

^

异或

~

取反

 

规则:

可以把1当做true 0当做false

只有参与运算的两位都为1&运算的结果才为1,否则就为0

只有参加运算的两位都是0|运算的结果才是0,否则都是1

只有参加运算的两位不同,^ 运算的结果才为1,否则就为0

*位运算


1& 与运算

& 参见运算的两位数都为1&运算符结果才为1,否则就为0

6&3

00000000

00000000

00000000

00000110

6

00000000

00000000

00000000

00000011

3

00000000

00000000

00000000

00000010

&  =2

 

2| 或运算

| 参与运算的两位都为0|运算的结果才为0,否则就为1

00000000

00000000

00000000

00000110

6

00000000

00000000

00000000

00000011

3

00000000

00000000

00000000

00000111

|  =7

 

 

 

 

 

 

3^ 异或运算

^只有参加运算的两位不同,^运算的结果才为1,否则就为0

00000000

00000000

00000000

00000110

6

00000000

00000000

00000000

00000011

3

00000000

00000000

00000000

00000101

^  =5

 

4、 ~ 反码

就是取反,二进制只有10,取反就是如果为1,取反就是0,如果是0,取反就是1

 

0000-0000

0000-0000

0000-0000

0000-0110

6

1111-1111

1111-1111

1111-1111

1111-1001

取反 -7

System.out.println(~6);//-7

结论:当参与取反的数值是正数时,把对应的值加上负号,再-1

  当参与取反的数值是负数时,把对应的值加上负号,再-1

负数的表现形式就是对应的正数取反,再加1。负数的最高位肯定是1

5异或特点

一个数异或同一个数两次,结果还是那个数.  *******一个简单的加密思想.

6^3^3

0000-0000

0000-0000

0000-0000

0000-0110

6

0000-0000

0000-0000

0000-0000

0000-0011

^3

0000-0000

0000-0000

0000-0000

0000-0101

 

0000-0000

0000-0000

0000-0000

0000-0011

^3

0000-0000

0000-0000

0000-0000

0000-0110

结果是6

练习:取出一个二进制的某一段。


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值