Java 位运算符和移位运算符

一,运算的位运算符: &  ~ |  ^   

 主要是对二进制的位计算

 

 

&  : 两个操作数中位都为1 结果才为1   其他结果为0   

  forExample: 128&  129

 128转为二进制: 10000000

 129转为二进制: 10000001

    结果为: 1000000 为129

 

 

| :  两个位只要有一个为1,那么结果就是1,否则就为0

forExample: 还是 128 129的二进制  因为129的位上是1  所以结果129

 

   51:       110011 

   129: 10000001 

结果为:      100110011   为179

 

~: 如果位为0,结果是1,如果位为1,结果是

 

forExample: 2 为 0010  位上是0  非就是  0010  为3   因为2是正数,非为  -3

 

 

^ : 两个操作数的位中,相同则结果为0,不同则结果为1。

 计算二进制的方法: 

 

   51:      1 10011 

   129: 10000001 

 结果为:     10110010 结果为178

 

转二进制的话:比如100 那么

100/2 50 0

50/2 25 0

25/2 12 1

12/2 6 0

6/2 3 0

3/2 1 1

1/2 1 1 则值为 1100100B(从下往上读)二进制后加上B  十进制加D 

 

二,移位运算符

 

160>>> 3  

 

160的二进制为: 10100000  向右移动3位为: 10100    4位  1010  5位  101  6位:10  7为  1  二进制最低为4位  不够在高位补0  也就是左边补0  

 

x<<y 相当于 x*2y ;x>>y相当于x/2y

 

 // 二进制

http://www.zybang.com/question/833a3488a881c0898b871872458ef4f6.html

 

 // 运算符介绍

http://blog.csdn.net/vebasan/article/details/6193916

原文地址:https://www.cnblogs.com/Seeasunnyday/p/6411665.html