`
wangwei3
  • 浏览: 120939 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA 位运算符和位移运算符

 
阅读更多
java位运算符包括
&(与)       AND
|(或)       OR
^(异或)     XOR
~(非)       NOT

位移运算符包括
>>(右移)
<<(左移)
>>>(右移,左边空出的位以0填充)
顾名思义,位运算符用于位运算,那就只能对整型或者字符型进行运算。而除了~(非)是一元运算符之外其他的都为二元运算符。

所有位运算都会把值转为二进制进行运算

&(与)
  运算规则:0&0=0   0&1=0  1&0=0   1&1=1
  即:两位同时为1时,结果为1,否则为0

  
     int a=(3&5);
     System.out.println(a);
     System.out.println(Integer.toBinaryString(3)); 
     System.out.println(Integer.toBinaryString(5)); 
   


   结果打印为
      1
     011
     101
    解析:3的二进制为011,5的二进制为101,与操作结果为001。转为十进制是1。


|(或)
      运算规则: 0|0=0   0|1=1  1|0=1   1|1=1
     即:参加运算的两个对象只要有一个为1,其结果就为1

   

      int a=(3|5);
      System.out.println(a);
      System.out.println(Integer.toBinaryString(3)); 
      System.out.println(Integer.toBinaryString(5)); 
    


   结果打印为
     7
    011
    101

    解析:3的二进制位011,5的二进制位101。或操作结果为111。转为10进制为7


^(异或)
    运算规则:1^0=0   0^1=1   1^0=1   1^1=0
         即:参加运算的两个对象,如果两个个相应位为“异”(值不同),则该位结果为1,否则为0

   
       int a=(3^5);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(3)); 
       System.out.println(Integer.toBinaryString(5)); 
    

   
    结果打印为
          6
       011
       101

    解析:3的二进制位011,5的二进制位101。或操作结果为110。转为10进制为6


~(非)
    运算规则:~1=0   ~0=1         
        即:对一个二进制数按位取反,即0变为1,1变为0

    ~运算符的优先级比算数运算符、关系运算符、逻辑运算符和其他运算符都高

<<(左移)
    将一个运算符对象的各二进制位全部左移诺干位(左边的二进制位丢弃,右边补0)
     操作数每左移一位,相当于该数乘以2
   
       int a=(3<<2);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(3)); 
       System.out.println(Integer.toBinaryString(12)); 
    

   
    结果打印为
         12
        11
        1100

    解析:此运算符的意思就是把3的二进制位全部左移两位,右边补2个0。3的二进制位11,左移两位后,右边补2个0就是1100。1100转为10进制为12。
     说到底左移操作就相当于2的2次方×3。 每左移1位次方就增1


>>(右移)
将一个数的各二进制位全部右移诺干位,正数左补0,负数左补1,右边丢弃。
操作数每右移一位,相当于该数除以2

       int a=(9>>1);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(9)); 
       System.out.println(Integer.toBinaryString(4)); 
    

   
    结果打印为
         4
        1001
        100
    
    解析:9的二进制为1001,右移1位后,左正数补0,右边丢弃。结果为 0100。转为10进制后为4。

3
0
分享到:
评论
3 楼 qq4628241 2015-01-21  
按位“异或”运算符 (^) 将第一操作数的每个位与第二操作数的相应位进行比较。 如果一个位是 0,另一个位是 1,则相应的结果位将设置为 1。 否则,将对应的结果位设置为 0

按位“与”运算符 (&) 会将第一操作数的每一位与第二操作数的相应位进行比较。 如果两个位均为 1,则对应的结果位将设置为 1。 否则,将对应的结果位设置为 0。

按位“与或”运算符 ( | ) 将第一个操作数的每个位与第二个操作数的对应位进行比较。 如果其中一个位是 1,则将对应的结果位设置为 1。 否则,将对应的结果位设置为 0。
2 楼 kehui 2014-09-05  
^(异或)
    运算规则:1^0=0   0^1=1   1^0=1   1^1=0

第一个和第三个,是一样的,结果居然不一样,博主改一下吧,别误导人。
1 楼 mikey_java 2012-06-22  
感谢楼主的详解,受益匪浅,谢谢

相关推荐

    java位运算符.pdf

    位运算符分为两大类:位逻辑运算符和位移运算符。位逻辑运算符包括按位与(AND)、按位或(OR)、按位异或(XOR)和按位非(NOT)。位移运算符则有右移(&gt;&gt;&gt;和&gt;&gt;)和左移()。 1. **位逻辑运算符**: - **按位非...

    Java移位运算符1

    在Java编程语言中,移位运算符是一种高效的方式来进行位操作,它们对于处理二进制数据和进行快速的乘法、除法等计算非常有用。本文将深入探讨Java中的三种移位运算符:左移运算符(),右移运算符(&gt;&gt;)以及无符号右...

    Java运算符+(优先级、目数)+.doc

    Java运算符是编程中至关重要的组成部分,它们用于执行各种计算和逻辑操作。了解运算符的优先级和目数对于编写高效、准确的代码至关重要。在Java中,运算符按照其功能分为不同的类别,并且有不同的结合性和目数。 1....

    java运算符优先级[借鉴].pdf

    Java运算符优先级 Java语言中的运算符优先级是指在Java语言中各种运算符的执行顺序和结合性。了解Java运算符优先级是...了解Java运算符优先级是非常重要的,掌握这些知识可以帮助我们编写更加正确和高效的Java程序。

    Java移位运算符详解实例(小结)

    Java移位运算符是Java语言中的一种基本运算符,用于对二进制数进行位移操作。移位运算符主要包括左移位运算符()、右移位运算符(&gt;&gt;&gt;)和带符号的右移位运算符(&gt;&gt;)。这些运算符可以单独用来处理int型整数。 1. ...

    Java运算符常见面试题及答案

    11. **位移运算符**:左移()和右移(&gt;&gt;)用于将二进制位向左或向右移动指定的位数。例如,`5 将返回20(二进制表示为101左移两位变为10100)。 12. **取反运算符**:`~`用于对整数进行按位取反,将0变为1,将1...

    李妍的Java学习之路-Java运算符

    位移运算符会改变数字的二进制位。左移 (`) 是向左移动指定的位数,右移 (`&gt;&gt;`) 则向右移动,高位可能丢失(取决于右移是否是有符号的)。无符号右移 (`&gt;&gt;&gt;`) 会在高位填充零,保持数值的正负性。 逻辑运算符包括 ...

    Java运算符.docx

    Java运算符是编程中不可或缺的部分,它们用于执行各种计算、比较和逻辑操作。在Java中,运算符可以分为多个类别,包括算术运算符、关系运算符、逻辑运算符、赋值运算符以及位运算符。 1. **算术运算符**:包括`+`、...

    JAVA中位运算符合移为运算符

    在Java编程语言中,位运算符和移位运算符是处理二进制数据的重要工具,它们在底层操作中发挥着关键作用。本文将深入探讨这两个主题,并通过实例解析其工作原理。 位运算符直接作用于整数类型的二进制表示,包括与(&...

    Java运算符优先级别.doc

    ### Java运算符优先级别详解 ...综上所述,掌握Java运算符的优先级和结合性有助于编写更高效、更易读的代码。在实践中灵活运用这些原则,并通过适当的括号来明确优先级,可以有效提升代码的质量。

    Java编程详细教程运算符表达式流程控制上PPT教案学习.pptx

    位移运算符`和`&gt;&gt;`分别用于左移和右移位,`&gt;&gt;&gt;`是无符号右移,移位过程中高位不会填充符号位。 最后,赋值运算符允许我们简洁地进行赋值操作,比如`x+=y`相当于`x = x + y`。同时,Java支持将其他运算符与赋值...

    JAVA位运算.pdf

    以上代码演示了各种位运算符的功能,包括按位与、按位或、按位异或、按位非以及位移运算。这些操作在实际编程中可用于高效的数据处理和算法实现,尤其在底层系统编程或性能敏感的场景中尤为重要。掌握这些位运算技巧...

    Java运算符 &#40;优先级、目数&#41; [1].doc

    接着是方括号`[``]`,然后是算术、关系、逻辑、位和移位运算符等,最后是赋值运算符。 2. **目数**: - 目数是指运算符需要的操作数的数量。单目运算符如`++`、`--`、`-`和`+`只需要一个操作数,而双目运算符如`*`...

    java位运算大全.pdf

    其次,Java中的位移运算符也非常重要,包括左移()、右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;)。左移运算符()将运算对象的二进制位全部左移若干位,右边空出的位用0补充。右移运算符(&gt;&gt;)则是将二进制位全部右移若干位,左端空出的位...

    3.2.2 java中的关系与条件运算符.pdf

    在Java编程语言中,关系与条件运算符是构建复杂逻辑...这些运算符在编程中用于创建复杂的条件判断、数据处理和位级操作,尤其是在处理二进制数据和优化性能时。理解并熟练运用这些运算符是成为高效Java程序员的关键。

    Java程序设计基础:运算符与表达式.pptx

    在Java程序设计中,理解和掌握运算符与表达式的使用是非常重要的基础技能。本文将深入探讨Java中的各种运算符及其用法,并通过实例讲解如何正确地使用这些运算符来构建有效的表达式。 #### 二、表达式的基本概念 - ...

    Java操作符的优先级和结合性

    在Java编程语言中,操作符的优先级和结合性是理解和编写正确代码的关键部分。它们决定了表达式的计算顺序,帮助开发者避免潜在的错误。本文将详细介绍Java中的操作符优先级和结合性规则。 首先,操作符的优先级是指...

    浅析Java语言在计算机软件开发中的应用.pdf

    Java语言的运算符包括赋值运算符、关系运算符、算数运算符、逻辑运算符、条件运算符、位运算符和位移运算符七种。Java语言的运算符可以操作常量与变量,Java语言的运算符对编程表达形式有各自特别的要求。在运算时...

Global site tag (gtag.js) - Google Analytics