Java学习总结(16.05.31)Java位运算符

原创 2016年05月31日 21:27:27

个人认为,位运算符是Java运算符中比较容易遗忘的运算符。位运算符多用于对数据进行底层操作,Java的位运算符有7种,下面将其一一列出以便必要时查找。


按位与(&)(双目双目运算符)  

对两个操作数的补码逐位进行对比,若两操作数的补码同一位都为1,则所得结果的补码对应的位为1,否则为0.,将补码化成原码即可得到结果

例:   -5 & 3 = 3

十进制                 

                                  原码

                                 反码

                                   补码

-5

   1000 0000 0000 0000 0000 0000 0000 0101

  1111 1111 1111 1111 1111 1111 1111 1010

   1111 1111 1111 1111 1111 1111 1111 1011

3

   0000 0000 0000 0000 0000 0000 0000 0011

   0000 0000 0000 0000 0000 0000 0000 0011

   0000 0000 0000 0000 0000 0000 0000 0011

-5 & 3=3

   0000 0000 0000 0000 0000 0000 0000 0011

   0000 0000 0000 0000 0000 0000 0000 0011

   0000 0000 0000 0000 0000 0000 0000 0011

 

按位或(|) (双目运算符)

对两个操作数的补码逐位进行对比,若某一位中有一个或以上操作数的补码为1,则所得结果的补码对应的位为0,若两操作数的补码同一位都为1,则所得结果的补码对应的位为0,将所得补码化成原码即可的到结果。

例:   -5 | 3= -5

十进制   

    原码

反码

补码

-5

1000 0000 0000 0000 0000 0000 0000 0101

 1111 1111 1111 1111 1111 1111 1111 1010

1111 1111 1111 1111 1111 1111 1111 1011

3

0000 0000 0000 0000 0000 0000 0000 0011

 0000 0000 0000 0000 0000 0000 0000 0011

0000 0000 0000 0000 0000 0000 0000 0011

-5 | 3=-5

1000 0000 0000 0000 0000 0000 0000 0101

 1111 1111 1111 1111 1111 1111 1111 1010

1111 1111 1111 1111 1111 1111 1111 1011


按位异或(^)(双目运算符)   用这个运算符是不能进行指数运算的

对两个操作数的补码逐位进行对比,若某一位中两个操作数的补码不一致时(一个为1,一个为0),则所得结果的补码对应的位为1,否则为0,将所得补码化成原码即可得到运算结果。

例:   -5 ^ 3=-8

十进制

原码

反码

补码

-5  

1000 0000 0000 0000 0000 0000 0000 0101    

1111 1111 1111 1111 1111 1111 1111 1010       

1111 1111 1111 1111 1111 1111 1111 1011

3

0000 0000 0000 0000 0000 0000 0000 0011

0000 0000 0000 0000 0000 0000 0000 0011

0000 0000 0000 0000 0000 0000 0000 0011

-5 ^ 3=-8

1000 0000 0000 0000 0000 0000 0000 1000

1111 1111 1111 1111 1111 1111 1111 0111

1111 1111 1111 1111 1111 1111 1111 1000


按位取反(~)(单目运算符)

对操作数的补码进行运算,对操作符的补码的每一位取反(1变成0, 0变成1),将所得补码化成原码即可的到取反结果。

例:……-5 = 4

十进制

原码

反码

补码

-5

1000 0000 0000 0000 0000 0000 0000 0101

1111 1111 1111 1111 1111 1111 1111 1010

1111 1111 1111 1111 1111 1111 1111 1011

^-5 = 4

0000 0000 0000 0000 0000 0000 0000 0100

0000 0000 0000 0000 0000 0000 0000 0100

0000 0000 0000 0000 0000 0000 0000 0100


按位左移(<<) (双目运算符)

将左操作数的补码向左移动右操作数个位(例如,若右操作数位2,则将左操作数的补码左移两位),,然后右边空出的若干位用0补上,再将左边超出去的若干位摄取,即可得到计算结果的补码,将所得补码化成原码即可得到运算结果

例:     -5 << 3 = -40

十进制

原码

反码

补码

-5

1000 0000 0000 0000 0000 0000 0000 0101

1111 1111 1111 1111 1111 1111 1111 1010

        1111 1111 1111 1111 1111 1111 1111 1011

-5<<3 = -40

1000 0000 0000 0000 0000 0000 0010 1000

1111 1111 1111 1111 1111 1111 1101 0111

111 1111 1111 1111 1111 1111 1111 1101 1000

(红色的截断)             (蓝色的位新补上的0)

按位右移 (>>)(双目运算符)

计算原理与按位左移相似,按位右移运算符对左操作数的补码进行右移,左边空出的位用符号为的数字补充,右边超出去的位则摄取。


 无符号右移(>>>)(双目运算符)

无符号右移运算符计算方式与按位右移相似,不同的是,无符号右移运算符将补码右移后,左边空出的位都用0来补充。



另外,& | ~这三个运算符还可以对布尔值进行运算

operator

true op true

 true op false

False op false

&

   true

false

false

|

   true

true

false

^

  false

true

false

& | ^ 这三个运算符都符合交换律

 &  、|  与逻辑运算符&&,|| 的运算结果一样但运算规则不一样:前者对两个布尔型的操作数都会进行判断,例如ture | true,系统判断完左操作数之后会再判断右操作数然后才会返回结果,而true|| true则是系统判断第一个操作数为true时就会直接返回true。

^对布尔值的运算:当左右两个布尔值不一致(相异)时返回true,否则返回false。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java位运算符

Java位运算符精解

  • 2012-06-06 16:03
  • 3.68MB
  • 下载

JavaSE视频学习阶段性总结 一(java入门,原生数据类型及使用注意,运算符)

通过最近观看的前5节基础视频学习,我对javaSE的基础有了更新的理解,特在此总结,讨论。共同学习,共同进步。 一.Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执...

Java基础学习总结----数据类型和运算符

一、数据类型 本文参考孤傲苍狼的博客http://www.cnblogs.com/xdp-gacl/p/3624567.html,供自己学习整理用            java是一种强类型语言,一...

Java学习中位运算符底层运算过程

以两个int型数据为例子,详细的描述它们之间进行& | ^操作的底层二进制运算过程,并分别对它们进行取反操作。 /** 两个int型数据进行& | ^操作,并对它们进行~ 底...

黑马程序员_java学习第二课中的赋值运算符疑惑总结

------- android培训、java培训、期待与您交流! ---------- 今天在复习课程的时候,发现了一些不明白的地方: class Demo { public stat...

Java位运算符总结

Java中的位操作符&(与)操作两个操作数中位都为1,结果才为1,否则结果为0public class data13 { public static void main(String[] ar...

Java学习之位运算符

位运算符 /* ^位异或的特点:一个数据对另一个数据位异或两次,该数本身不变。 */ class OperatorDemo2 { public static void main(St...

Java学习笔记(位运算符)

------- android培训、java培训、期待与您交流! ----------  位运算符     位运算符用于处理整型和字符型的操作数。位运算是完全针对二进制位(bit)单位的操作,Java...

Java学习之-位运算符

Java中编码负数     Java采用”2的补码“编码负数,它是一种数值的编码方法,要分二步完成,假设为1字节,实际通常采用int型4字节 第一步,每一个二进制位都取相反值,0变成1,1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)